我在for循环中设置数据对象的值时出现问题。
// data object
var data = {
title: '',
x: {
something: 'test',
someVar: ''
},
y : {
something: '',
someVar: ''
},
dots: []
}
例如,我想设置(或更新)data.x.something =“tests”;我可以在console.log中查看已测试的更新值。但是,在我的for循环中,它会产生错误:
for(var i = 0, len = data.length; i < len; i++) {
data.x.something = "x";
console.log('data.x.something', data.x.something);
// log says "Uncaught TypeError: Cannot set property 'something' of undefined". How come I can't set the var inside my for loop?
}
有什么建议吗?感谢。
答案 0 :(得分:0)
使用以下代码工作jsFiddle是HERE
首先,您的数据对象设计不佳。如果你想迭代它,那就意味着它拥有相同类型的x个对象。
var data = [
{// first object with the properties.
title: '',
x: {
something: 'test',
someVar: ''
},
y : {
something: '',
someVar: ''
},
dots: []
}, {// second object with same properties
title: '',
x: {
something: 'test2',
someVar: ''
},
y : {
something: '',
someVar: ''
},
dots: []
}
];
其次,这不是你如何遍历一个对象。那是因为JavaScript对象没有length属性,这不是迭代对象的正确方法。如果你需要一个集合来保存类型为k的n个对象(具有一组特定的属性),那么使用一个数组,否则你将需要更多无用的嵌套。请参阅我对this question关于JS中数组和对象的回答。
for (var i = 0, len = data.length; i < len; i++) {
data[i].x.something = "x";
console.log(data[i].x.something);
};