循环填充Javascript-Object键/值吗?

时间:2019-03-05 12:18:18

标签: javascript arrays loops object

我想做这样的事情:

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;
}

...但是这意味着我必须总是总是事先将一个空对象推入数组?什么是标准/优雅的解决方案?

5 个答案:

答案 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);

这应该有帮助。