【问题标题】:Populating Javascript-Object keys/values in loop?在循环中填充 Javascript-Object 键/值?
【发布时间】:2019-03-05 12:18:18
【问题描述】:

我想做这样的事情:

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

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

【问题讨论】:

  • 4 是从哪里来的?也许分享更多代码以获得更好的答案
  • 哦,对不起。它现在只是基于另一个数组进行硬编码;将来它将只使用该数组.length

标签: javascript arrays loops object


【解决方案1】:

在存储任何键值对之前,您必须创建一个空白 JSON 对象,然后您将在数组中推送一个 JSON 对象。

let objects = [];
for (let i = 0; i < 4; i++) {
    objects[i] = {};
    objects[i].words = 'wordsOfSentence';  
    objects.push(objects[i]);  

}

console.log(objects);

【讨论】:

  • 我没听懂你的问题,能不能简单解释一下。
  • 我刚刚提到了术语 JSON。这只是 stringified 数据,而不是数组或对象。
【解决方案2】:

创建对象,然后将其添加到数组中:

let obj = [];

for(let i=0;i<4;i++) {

// doing some stuff here ...
// and then, finally:
const newObj = { words: wordsOfSentence }
obj[i] = newObj;
}

【讨论】:

    【解决方案3】:

    你可以使用 if 语句

    if( obj[i] ){
      obj[i].words = wordsOfSentence;
    }
    

    或者你可以在访问之前分配一个默认值

    obj[i] = obj[i] || {}
    

    【讨论】:

      【解决方案4】:

      您可以在每次迭代中简单地推送一个新对象。

      let objects = [];
      
      for (let i = 0; i < 4; i++) {
          objects.push({words: wordsOfSentence});
      }
      

      【讨论】:

        【解决方案5】:
        let _obj = {};
        _obj.words = [];
        for (let i = 0; i < 4; i++) {    
            _obj.words.push('WordsOfSentense');
        }
        console.log(_obj);
        

        这应该会有所帮助。

        【讨论】:

          猜你喜欢
          • 2014-04-24
          • 1970-01-01
          • 2022-09-23
          • 1970-01-01
          • 2012-11-21
          • 1970-01-01
          • 1970-01-01
          • 2018-12-21
          • 1970-01-01
          相关资源
          最近更新 更多