使用 2 个字段的附加值创建一个新数组

Creating a new array with added value from 2 fields

大家好,目前我有一个包含一些数据的数组:

 const data = [
      {car: 'Hyundai', price: '60.00', tax: '5.00', total: 0},
      {car: 'Honda', price: '80.00', tax: '7.00', total: 0},
      {car: 'Tesla', price: '100.00', tax: '10.00', total: 0},
  ]

数据集更大。什么是计算总(价格+税)的新数组的最佳方法。不想改变原来的。所以我需要这个回来:

const newData = [
      {car: 'Hyundai', price: '60.00', tax: '5.00', total: 65.00},
      {car: 'Honda', price: '80.00', tax: '7.00', total: 87.00},
      {car: 'Tesla', price: '100.00', tax: '10.00', total: 110.00},
  ]

我有更多的字段,所以我想知道是否有比我当前的解决方案更有效、更短的代码来完成它,即 forEach 然后在总键上,我只是做 data.price + data.tax.

使用map()从旧数组创建新数组。使用省略号将新 属性 合并到旧对象的副本中。

const data = [
      {car: 'Hyundai', price: '60.00', tax: '5.00', total: 0},
      {car: 'Honda', price: '80.00', tax: '7.00', total: 0},
      {car: 'Tesla', price: '100.00', tax: '10.00', total: 0},
  ];
const newData = data.map((car) => ({...car, total: Number(car.price) + Number(car.tax)}));
console.log(newData);

老兄,Array.forEach 非常有效,但您可以创建一个 Array.map() 并预定义一个函数。例如:

function func(car) {
car.total = car.price + car.tax;
}
let newData = data.map(func);

此外,作为代码逻辑的提示,可能需要使用 let 或 var 而不是 const,因为 inflation、价格变化和税收 increase/decrease 是可能的。