创建动态对象Javascript

时间:2017-09-05 09:16:45

标签: javascript object for-loop

我只是想在JS中创建一个动态对象,但是Object只保存了foor循环的最后一个元素。继承我的代码:

for(var i = 0; i < req.session.userObjekt.length; i++) {
  var userObjekt = {
    [req.session.userObjekt[i].User]: {
      Data : req.session.userObjekt[i].Data, 
      Admin: req.session.userObjekt[i].Admin
    }
  };
}

当我在for循环中输出时,我得到了正确的结果(7个用户+属性) 当我输出for循环时,我只获得最后一个User + Properties。

如何在我的对象中保存for循环中的所有元素?

提前致谢。

2 个答案:

答案 0 :(得分:1)

因为您在每次迭代中为userObjekt分配了一个新对象。从for循环体

移出对象声明
var userObjekt = { };

for(var i = 0; i < req.session.userObjekt.length; i++) {

  userObjekt[req.session.userObjekt[i].User] = {
      Data : req.session.userObjekt[i].Data, 
      Admin: req.session.userObjekt[i].Admin
  };

}

答案 1 :(得分:1)

你可以在循环之外创建一个数组,稍后只需将对象推入其中就可以使用声明和填充的数组:

var objektArr = [];
for(var i=0; i<req.session.userObjekt.length; i++) {
  var userObjekt = {
    [req.session.userObjekt[i].User]: {
      Data : req.session.userObjekt[i].Data, 
      Admin: req.session.userObjekt[i].Admin
    }, 
  };
  objektArr.push(userObjekt);
}

console.log(objektArr);