【问题标题】:Can I Use A Javascript Array Object As An Argument In A Function? How?我可以在函数中使用 Javascript 数组对象作为参数吗?如何?
【发布时间】:2011-11-25 15:59:18
【问题描述】:

所以我正在尝试创建一个函数,该函数接收一个数组(我猜它更像是一个 JSON 对象,或者我们被告知)对象并根据该数组返回一个值,但我一直收到错误消息,所以我很确定我做错了。

我是 JavaScript 的新手,所以请放轻松。另外,我发现this thread 这与我要问的问题相似,但我不太明白那个问题(因此是答案)。

这是我们得到的对象的示例:

var returned_json =  {
    "nike_runs": [
        {
            "start_time": "2011-03-11T19:14:44Z",
            "calories": 12.0,
            "distance_miles": "0.10",
            "total_seconds": 288.0,
            "average_pace":"50.47"
        },
        {
            "start_time": "2011-03-11T19:41:25Z",
            "calories": 7.0,
            "distance_miles": "0.06",
            "total_seconds": 559.0,
            "average_pace": "165.19"
        },
        {
            "start_time": "2011-03-11T20:27:45Z",
            "calories": 197.0,
            "distance_miles": "1.63",
            "total_seconds": 8434.0,
            "average_pace": "86.22"
        },
        ...
    ]
}

这是我的代码:

function getExp (returned_json) {
    var exp;
    for (var i = 0; i <= returned_json.nike_runs.length; i++) {
        exp += returned_json.nike_runs[i].calories;
    }
    return exp;
}

它返回一个错误:

TypeError: returned_json.nike_runs[i] is undefined

我认为这与我没有定义要传递给函数的对象类型有关,但我的研究告诉我这并不重要。

帮助? :(

谢谢。

【问题讨论】:

标签: javascript arrays


【解决方案1】:

使用i &lt; returned_json.nike_runs.length,而不是i &lt;= returned_json.nike_runs.length

编辑:您最好也为exp 定义一个起始值。

【讨论】:

  • 实际上为了性能我会使用var i = 0, l = returned_json.nike_runs.length; i &lt; l; i++ 然后你只收集一次对象的长度而不是每次迭代。仅供参考。
  • @rlemon 我明白你对集合的看法,但该操作非常小,最终可能不会产生任何影响,但你是对的,所以我会这样做。
  • @Daniel Brockman:谢谢伙计,你的建议很有帮助,当我读到它时,很明显我的错误在哪里,但我不明白它是如何返回类型错误的,但无论如何-耸耸肩- 但是,在修复它之后,我又遇到了一个错误......我的 getExp(returned_json) 操作返回 0。FML。任何想法为什么?
  • 没关系,一切都已修复。丹尼尔,非常感谢,我是一个明显无法注意到超级明显的 CS101 错误的怪胎。我觉得很愚蠢T_T谢谢伙计。
  • @DanielBrockman 是的,伙计,非常感谢。这是一个如此简单的修复,我觉得自己像个笨蛋。哦,虫子,它们就是这么小的一个洞。
猜你喜欢
  • 1970-01-01
  • 2013-11-02
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多