我试图找出如何将新值附加到对象的同一属性.我有以下代码:

let xp_logs = {};
for (let i = 0; i <= rows.length; i++) {
    if (rows[i]) {
        if(member.roles.cache.find(r => r.id == roles.admin)) {
            xp_logs[todaysDate] = {}
            xp_logs[todaysDate][member[i].displayName] = {id: member[i].user.id, xp: rows[i].xp}
            console.log(member.displayName) // returns multiple names, last name is Henry (from rows)
        }
    }
}
fs.writeFileSync("./xp_logs.json", "\n" + JSON.stringify(xp_logs, null, 2));

[member.displayName]每for循环更改一次,我希望每个循环在[todaysDate]中创建一个新值,属性名为[member.displayName].

它当前使用行中的下一个名称替换属性名称,而不是添加新属性,并且在for循环结束时,它只保存行中的姓氏.

{
  "7/21/2022": {
    "Henry": {
      "id": "331231456712356126",
      "xp": 280
    }
  }
}

然而,我想让它看起来像这样:

{
  "7/21/2022": {
    "Sierra": {
      "id": "123561241241241244",
      "xp": 190
    },
    "Cammy": {
      "id": "556574574574234234",
      "xp": 600
    },
    "Henry": {
      "id": "331231456712356126",
      "xp": 280
    }
  }
}

推荐答案

每次通过循环,你都会将xp_logs[todaysDate]重置为一个空对象.只有当属性不存在时,才应该这样做.

此外,for个循环应该使用条件i < rows.length;,而不是i <= rows.length;.数组索引从0到长度-1.使用此修复程序,您不需要额外的判断if (rows[i]),只需要在数组结束后跳过迭代.

let xp_logs = {};
for (let i = 0; i < rows.length; i++) {
  if (member.roles.cache.find(r => r.id == roles.admin)) {
    if (!xp_logs[todaysDate]) {
      xp_logs[todaysDate] = {};
    }
    xp_logs[todaysDate][member.displayName[i]] = {
      id: member.user.id,
      xp: rows[i].xp
    }
    console.log(member.displayName) // returns multiple names, last name is Henry (from rows)
  }
}

Javascript相关问答推荐

setcallback是什么时候放到macrotask队列上的?

使用GraphQL查询Uniswap的ETH价格

我创建了一个创建对象的函数,我希望从该函数创建的对象具有唯一的键.我怎么能做到这一点?

如何迭代叔父元素的子HTML元素

Rxjs流中生成IMMER不能在对象上操作

Nextjs 13.4 Next-Auth 4.2登录(&Quot;凭据&,{});不工作

传递方法VS泛型对象VS事件特定对象

为什么我的Navbar.css没有显示在本地主机页面上?

如何在Highlihte.js代码区旁边添加行号?

使用onClick单击子元素时,使用交点观察器的关键帧动画意外运行

用内嵌的含selenium的Java脚本抓取网站

如何在函数组件中保留对计时器的引用

如何从图表中映射一组图表-js使用REACT

如何在不获取其子元素的文本内容的情况下获取元素的文本内容?

在一次操作中使用多个addToSet不适用于多个数组

Cypress :条件测试过程中出错

文本动画在其消失之前

使用new关键字或createElement()创建的自定义元素没有is:属性,为什么?

Mongoose updateOne()不能传入选项

如何在 Select 新选项时重置数组筛选器?(react )