【问题标题】:Add key and incremental values to array of objects将键值和增量值添加到对象数组
【发布时间】:2021-06-21 13:08:38
【问题描述】:

我有一个对象数组。我想为每个对象添加另一个属性,但我希望该值本质上是递增的。我希望每个人都比另一个人多 5 个。

我的对象数组:

let arr_obj = [
   {
     name: 'Hermione',
     order: 'books',
   },
   {
     name: 'Harry',
     order: 'brooms',
   },
   {
     name: 'Ron',
     order: 'food',
   }
]

我想为数组中的每个对象添加另一个属性,并希望该值比前一个值小 25。

所以我希望我的对象看起来像什么(预期结果):

arr_obj = [
   {
     name: 'Hermione',
     order: 'books',
     order_size: 100,
   },
   {
     name: 'Harry',
     order: 'brooms',
     order_size: 75, //100-25  
   },
   {
     name: 'Ron',
     order: 'food',
     order_size: 50, //75-25   
   }
]

我尝试了一个 forEach 但这不起作用。它不会减去 25。

let order_size = 100;
arr_obj.forEach(d => {
   d['order_size'] = order_size-25;
});

当我这样做时,我得到:

arr_obj = [
   {
     name: 'Hermione',
     order: 'books',
     order_size: 100,
   },
   {
     name: 'Harry',
     order: 'brooms',
     order_size: 100,
   },
   {
     name: 'Ron',
     order: 'food',
     order_size: 100,
   }
]

如何获得预期的结果?

【问题讨论】:

  • 试试order_size -= 25
  • 不,这不是你得到的。但事实上,如果你一遍又一遍地做同样的order_size-25,它总是会给出相同的结果(75,而不是 100)。您必须更新 order_size 减少 25 岁。

标签: javascript jquery arrays object ecmascript-6


【解决方案1】:

您忘记在每次迭代时修改 order_size。试试这个:

let arr_obj = [
       {
         name: 'Hermione',
         order: 'books',
       },
       {
         name: 'Harry',
         order: 'brooms',
       },
       {
        name: 'Ron',
        order: 'food',
       }
    ];

let order_size = 100;
arr_obj.forEach(d => {
   d['order_size'] = order_size;
   order_size -= 25;
});
console.log(arr_obj)

【讨论】:

    【解决方案2】:

    forEach 方法还将为您提供一个键(每个项目递增 1 的数值),您可以使用它对数组中的值进行任何必要的递增或递减。

    例如,如果您想要一个每次增加 5 的值

    arr_obj.forEach( (item, key) => {
      item.newValue = key*5
    });
    

    或者如果您想每次将一个值减少 25:

    arr_obj.forEach( (item, key) => {
      item.order_size = 100 - (key*25)
    });
    

    这可能比更新当前函数之外的任何变量更好

    【讨论】:

      猜你喜欢
      • 2022-12-28
      • 2014-07-09
      • 2022-06-10
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多