【问题标题】:Cannot Use Count Variable in Embedded Array Lookup无法在嵌入式数组查找中使用计数变量
【发布时间】:2016-11-01 18:56:46
【问题描述】:

我的 C# 相当流利,但在我的票的 javascript 部分中,我在一个非常基本的(似乎)概念上苦苦挣扎。这段代码:

addPaymentsToBreakdown = function () {
    for (var count = 0; count < checkedPayments.length; count++) {
        (function (count) {
            console.log(checkedPayments[0][count].value); 
        })(count); 
    }
}

是我编写的较大函数的一小部分。数组“checkedPayments”正在其他地方使用并已正确实例化。

我无法理解的概念是为什么我不能简单地在我的函数中使用 count 变量来迭代数组中的第二层“count”索引。如果我手动输入一个数字,我可以很好地查找任何索引。我也可以只使用 console.log() 数组中的每个元素,但由于某种原因,将该计数变量与嵌入式数组索引结合使用会使事情变得混乱。那个错误 我看到之后是Uncaught TypeError: Cannot read property 'value' of undefined. 请帮我解决问题,并简单解释一下为什么事情不起作用。谢谢

【问题讨论】:

  • checkedPayments[0] 是和checkedPayments.length 长度相同的数组吗?
  • 您可以使用let 代替var。但是使用var 你可能会喜欢(function (i) { return console.log(checkedPayments[0][i].value); })(count) 不要使用count 作为内部函数参数。
  • 您的代码在this fiddle 中未经修改就可以工作,尽管我觉得checkedPayments 的结构很奇怪。
  • 您能解释一下为什么您在checkedPayments.length 上进行迭代,然后访问checkedPayments[0][count] 而不是checkedPayments[count]
  • @ray 感谢大家的 cmets:数组看起来有点奇怪的原因是,在从包含用户可检查元素的组合框中将元素拉出页面后,数组正在被填充。当这个数组被填充时,元素就是对象。从而使该数组成为对象数组。这就是为什么存在嵌入式结构的原因。我需要访问这些对象的“值”属性,并且该数据的层次结构是数组 --> 数组 --> 值

标签: javascript arrays loops scope


【解决方案1】:

感谢大家的反馈。我最终找到了答案,我想分享它。代码:addPaymentsToBreakdown = function () { console.log('checkedPayments:', checkedPayments); for (var count = 0; count < checkedPayments.length; count++) { console.log(checkedPayments[count][0].value); } }

最终做的正是我需要的。关键在于找到 [count][0].value。我需要访问比我更远的一层。该数组的输出现在显示三个元素的值,它们代表数据库中的 ID。我现在可以使用它来完成我的查询。感谢您的帮助;)

【讨论】:

    猜你喜欢
    • 2022-09-29
    • 2021-05-01
    • 1970-01-01
    • 2014-08-19
    • 2015-09-10
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多