Javascript对象数组在特定对象位置的总和

时间:2018-04-23 19:01:52

标签: javascript

我有这个数组:

let arr = [ { "Id": 0, "Name": "Product 1", "Price": 10 }, 
            { "Id": 0, "Name": "Product 1", "Price": 15 } ]

如何将所有1位置中的Price总结为:

let Final_arr = [ { "Id": 0, "Name": "Product 1", "Price": 11 }, 
                  { "Id": 0, "Name": "Product 1", "Price": 16 } ]

谢谢! ;)

5 个答案:

答案 0 :(得分:3)

遍历数组并递增price: 请记住,这将改变原始数组, 使用arr.slice(0).forEach( ...保持原文不变。

let arr = [{
    "Id": 0,
    "Name": "Product 1",
    "Price": 10
  },
  {
    "Id": 0,
    "Name": "Product 1",
    "Price": 15
  }
]

arr.forEach((e) => {
  return e.Price++
});

/*

const newArr = arr.slice(0).forEach((e) => {
  return e.Price++
});


*/
console.log(arr)

答案 1 :(得分:3)

您还可以使用for循环:

var arr = [{
    "Id": 0,
    "Name": "Product 1",
    "Price": 10
  },
  {
    "Id": 0,
    "Name": "Product 1",
    "Price": 15
  }
];

for (var i = 0; i < arr.length; i++)
  arr[i].Price++;

console.log(arr);

答案 2 :(得分:2)

arr.map((a) => { a.Price = a.Price + 1 });

答案 3 :(得分:1)

你可以克隆数组并映射它以获得一个新数组,如下所示:

let arr = [ { "Id": 0, "Name": "Product 1", "Price": 10 }, 
            { "Id": 0, "Name": "Product 1", "Price": 15 } ];
            
let newArr = JSON.parse(JSON.stringify(arr)).map(function(item){
  item.Price++;
  return item;
});


console.log(newArr);

答案 4 :(得分:1)

使用es2015语法可以通过以下方式实现:

const Final_arr = arr.map((item) => {
    return { ...item, price: item.Price + 1 };
});

使用vanilla JS,你可以这样做:

var Final_arr = arr.map(function (item) {
    return { Id: item.Id, Name: item.Name, Price: item.Price + 1 };
});