返回 for 循环中对象中每个键的值
Return value of each key in object in a for loop
我有一个对象和一个数组:
m = { "1": ["2", "3"], "6": ["4", "5"] };
var p = ["1", "6"];
我有一个 for 循环:
for (var i = 0; i < p.length; i++) {
// Return an array that is the value of a key in m, for each key specified in p
var array = m[p[i]];
// do stuff with array
}
上述方法不起作用的任何原因是什么? 在 for 循环运行后,数组仍然undefined
。
我也认为p
也应该[1,6]
?由于您正在使用它来引用对象中的键 m
.
发生此错误是因为您有以下声明:
var p = ["1","2"];
但m
属性是:
m = {
"1": [2,3],
"6": [4,5]
}
因此,在p[1]
中,程序读取m["2"]
但它没有"2"属性。请改用以下代码:
var p = ["1","6"];
你的m = { "1": ["2", "3"], "6", ["4", "5"] };
声明给我带来了语法错误。我猜你的意思是m = { "1": ["2", "3"], "6": ["4", "5"] };
.
p.length
是 2,因此您有 2 次循环迭代。在第一次迭代中,表达式的值为:
i = 0
p[i] = "1"
m[p[i]] = m["1"] = ["2", "3"]
在第二个循环中:
i = 1
p[i] = "2"
m[p[i]] = m["2"] (undefined)
你只有m["1"]
和m["6"]
,没有m["2"]
。这就是为什么array
在上次迭代中未定义的原因。因此,它在循环后仍然未定义。
您可以按如下方式更正m
声明:
m = { "1": ["2", "3"], "2": ["4", "5"] };
现在,您将在循环后获得array = ["4", "5"]
。
我可以建议你不要将整数存储在字符串中。使用2
而不是"2"
。否则,将来可能会导致错误。例如,2 + 2 = 4
和"2" + "2" = "22"
.如果您有来自其他代码的"2"
,请使用parseInt
将其转换为普通数字。
此外,您不必使用键列表创建p
变量。您可以简单地使用for..in
循环来循环访问对象的键:
m = { 1: [2, 3], 2: [4, 5] };
for(i in m) {
var array = m[i];
//do stuff
}
请记住,for..in
并不能保证保留密钥的顺序。但是,for..in
的所有现有实现都会保留顺序。
相关文章:
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- 在for循环中未获取JQuery/JavaScript对象值
- 如何使用for in循环在javascript中显示对象中的对象
- 借助for循环和数组在对象中添加属性
- JS for循环来设置HTML对象参数
- 为什么我不能用for Each迭代对象
- 在for循环-Javascript中创建新对象
- 从Javascript for jqGrid通过JSON发送服务器端对象
- 使用函数for循环遍历对象以更改值,然后返回结果
- 页面对象中的 for 循环未正常运行
- Javascript for.in 对象属性
- 在 JavaScript 中使用 for in 循环从对象中获取值
- 使用javascript在for循环中构建对象
- 为for循环中的对象添加新属性
- Javascript - 使用 for 时遇到问题.以循环访问对象
- 如何在JavaScript中正确地将对象从for循环推送到数组
- 如何在for循环中的新对象中插入数据
- 获取for in循环中对象的名称,用作另一个对象的键
- Javascript-在for循环上从var中的对象获取适当性
- 如何知道你正处于对象for循环的最后一轮