基于 Javascript 的嵌套 for 循环以及对象
Javascript based nested for loop along with Objects
我是javascript的新手。 当我使用对象和嵌套循环时。
var a = [{b:[{c:null}]}]
for(var x= 0 ; x<10;x++){
for(var y= 0 ; y<10;y++){
console.log(a);
a[x].b[y].c = y;
console.log(a);
}
}
我收到错误TypeError: Cannot set property 'c' of undefined
有人可以解释为什么它像这样工作。我正在寻找这样的
a[0].b[0].c = 1;
a[0].b[1].c = 2;......
a[1].b[0].c = 1;....
a[9].b[9].c = 9;
我收到类似类型错误的错误:无法设置属性"c" 未定义 有人可以解释为什么它像这样工作吗
因为数组的大小a
和 b
是 1,并且你的 y 变成 1 时,它试图访问数组 b 中的第 2 项,它将返回 undefined(因为该值不存在)。
所以b[1].c
-> undefined.c
->错误(如下)
类型错误: 无法设置未定义的属性"c"
因为在它抛出此错误时,y
大于 0,但您的 b
数组中只有 1 个元素。
我将假设,在控制台中,您会看到:
[object Object]
[object Object]
[object Object]
然后是错误。这将表明内部 for 循环处于第二次迭代中。
在发生错误时,可以将代码解释为:
a[0].b[1].c = 1;
因为你要迭代它 10 次,所以它的迭代次数应该与数组的长度相同,所以在第一个循环中使用 a.length
,在第二个循环中使用a[x].b.length
。
var a = [{b:[{c:null}]}]
for(var x= 0 ; x<a.length;x++){
for(var y= 0 ; y<a[x].b.length;y++){
console.log(a);
a[x].b[y].c = y;
console.log(a);
}
}
你可以尝试这样的事情:
Array.forEach
和for..in
的组合
var a = [{b:[{c:"Test"}]}]
// a is Array. Use Array.forEach
a.forEach(function(item){
// Check if current element is Object. If yes, use for..in
if(typeof(item) === "object"){
for(k in item){
// Check if current item is Array and again loop over it
if(Array.isArray(item[k])){
item[k].forEach(function(o){
// Print necessary value.
console.log(o.c);
})
}
}
}
});
相关文章:
- 循环遍历以数组为值的Javascript对象
- json对象中缺少对象循环
- 如何循环通过2个对象数组并通过匹配id进行合并
- 如何使用自定义辅助对象(handler)实现嵌套的每个循环
- 如何在javascript中循环并将JSON对象放入数组中
- 对象/数组和循环上的原型
- foreach对象循环添加到堆栈顶部
- javascript 中的框架对象循环是未定义的
- JavaScript 对象循环替换信息
- 为什么不是'这个对象循环不起作用
- 在一行中使用对象循环和数组循环
- 将从节点promise返回的对象循环到下一个.then
- 通过javascript对象循环将键转换为字符串
- 从对象循环中排除元素
- 如何在对象循环中跳过键
- javascript中的对象循环
- 动态地从对象循环键传递属性引用
- Javascript对象循环只是将最后迭代的元素追加到另一个对象
- 通过JSON对象循环后动态分配变量
- 从Javascript对象循环动态创建的表单.如何将数据保存回对象