我想做这样的事情:
let obj = [];
for(let i=0;i<4;i++) {
// doing some stuff here ...
// and then, finally:
obj[i].words = wordsOfSentence;
}
但这给我一个错误。
无法设置未定义的属性“单词”
就目前而言,我是这样解决的:
let obj = [{}, {}, {}, {}];
for(let i=0;i<4;i++) {
// doing some stuff here ...
// and then, finally:
obj[i].words = wordsOfSentence;
}
...但是这意味着我必须总是总是事先将一个空对象推入数组?什么是标准/优雅的解决方案?
答案 0 :(得分:2)
在存储任何键值对之前,必须先创建一个空白的JSON对象,然后才能将JSON对象压入数组。
let objects = [];
for (let i = 0; i < 4; i++) {
objects[i] = {};
objects[i].words = 'wordsOfSentence';
objects.push(objects[i]);
}
console.log(objects);
答案 1 :(得分:0)
创建对象,然后将其添加到数组中:
let obj = [];
for(let i=0;i<4;i++) {
// doing some stuff here ...
// and then, finally:
const newObj = { words: wordsOfSentence }
obj[i] = newObj;
}
答案 2 :(得分:0)
您可以使用if语句
if( obj[i] ){
obj[i].words = wordsOfSentence;
}
或者您可以在访问前指定默认值
obj[i] = obj[i] || {}
答案 3 :(得分:0)
您可以在每次迭代中简单地推送一个新对象。
let objects = [];
for (let i = 0; i < 4; i++) {
objects.push({words: wordsOfSentence});
}
答案 4 :(得分:0)
let _obj = {};
_obj.words = [];
for (let i = 0; i < 4; i++) {
_obj.words.push('WordsOfSentense');
}
console.log(_obj);
这应该有帮助。