【问题标题】:Create Dynamic Object Javascript创建动态对象 Javascript
【发布时间】:2017-09-05 09:16:45
【问题描述】:

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

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 循环中输出时,我只得到最后一个用户 + 属性。

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

提前致谢。

【问题讨论】:

  • 您每次都在创建一个新的 userObjekt,它似乎正在替换所有以前的 userObjekt,并且包含最后一个。
  • 您是否在同一个数组中循环并将数据从同一个数组分配到同一个数组,但存在语法问题。
  • 是的,我刚刚意识到我一遍又一遍地创建相同的 Objekt。很抱歉用我愚蠢的问题骚扰了所有人。

标签: javascript object for-loop


【解决方案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
  };

}

【讨论】:

  • 不应该 userObjekt 是一个数组 var userObjekt = [];
  • 这取决于他的逻辑。其实我认为你是对的,但在他的例子中,他打算为每个对象使用一个新的属性,并且可以通过User 访问他的对象
  • 我才意识到我犯了一个多么愚蠢的错误!代码完美运行,非常感谢!会将这个答案标记为“已解决”
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    相关资源
    最近更新 更多