【问题标题】:Populating JavaScript Object填充 JavaScript 对象
【发布时间】:2015-03-13 15:49:04
【问题描述】:

我们有一个空对象:

var obj = {};

我想创建一个 for 循环,每次迭代都会添加一个新的 obj = {value: i, next: i+1}

【问题讨论】:

  • 你的意思是添加一个新的obj?
  • Object.keys(obj).forEach(function () {})
  • 你想得到什么结果?一组对象,例如 [{value: 1, next: 2}, {value: 2, next: 3}]?
  • for 循环什么?向什么添加新的 obj?

标签: javascript arrays object properties


【解决方案1】:

只需使用一个对象数组,然后每次迭代都将这个值推送到它上面:

var obj=[];
for(var i=1;i<10;i++){
    obj.push({value: i, next: i+1});
}

这是a DEMO Fiddle

对于每次迭代,请提供obj.valueobj.next,查看JavaScript Object Properties 了解更多信息。

【讨论】:

  • 我不工作,因为它一直用新值覆盖 obj.value 和 obj.next。
  • 是的,当然不是,抱歉,您必须改用对象数组,因为一个对象不能包含同一属性的不同值。看看我的编辑。
  • 首先,你的答案不正确——你忘了obj.push(newobj) 到数组。二、无需创建变量:array.push({value: i, next: i+1});
  • @chsdk 这不是 JSON,这是 js 对象,所以没有必要在键名中使用引号。
  • @chsdk 我看不出两种情况下结果之间的差异。 See
【解决方案2】:

不太清楚你的意思,但是这个是什么意思

var obj = [];
function Obj(i){
    this.value = i;
    this.next = i+1;
}

for (var i= 0;i<10;i++){
    obj.push(new Obj(i));
}

而不是对象的对象,而是它们的数组

【讨论】:

  • 你打错了 - obj.push = new Obj(i) 覆盖了数组的方法,而不是调用它
猜你喜欢
  • 2016-01-12
  • 1970-01-01
  • 2011-06-10
  • 2015-08-15
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
相关资源
最近更新 更多