首页 > 解决方案 > 方法赋值JS

问题描述

有一个函数可以将密钥“certificate”更改为“certificate_car”。有没有办法通过直接使用assign方法更改数组来改进功能?可能吗?

const arr = [{
    "name": "BMW",
    "price": "55 000",
    "country": "Germany",
    "certificate": "yes"
  },
  {
    "name": "Mercedes-benz",
    "price": "63 000",
    "country": "Germany",
    "certificate": "yes"
  },
  {
    "name": "Mitsubishi",
    "price": "93 000",
    "constructor": "Bar John",
    "door": "3",
    "country": "Japan",
  },
  {
    "name": "TOYOTA",
    "price": "48 000",
    "max_people": "7",
    "country": "Japan",
    "certificate": "yes"
  },
  {
    "name": "Volkswagen",
    "price": "36 000",
    "constructor": "Pier Sun",
    "country": "Germany",
    "certificate": "no"
  },
];

function certificateCar(arr) {
  return arr.map(function(item) {
    let itemCar = {};
    let newItem = Object.assign({}, item);
    Object.keys(newItem).forEach(item => {
      itemCar[item.replace("certificate", "certificate_car")] = newItem[item]
    });
    return itemCar;
  })
}
console.log(certificateCar(arr))

标签: javascriptarraysmethods

解决方案


您可以使用解构并更改所需的键名并保持其余部分不变

const arr = [{"name":"BMW","price":"55 000","country":"Germany","certificate":"yes"},{"name":"Mercedes-benz","price":"63 000","country":"Germany","certificate":"yes"},{"name":"Mitsubishi","price":"93 000","constructor":"Bar John","door":"3","country":"Japan",},{"name":"TOYOTA","price":"48 000", "max_people":"7","country":"Japan","certificate":"yes"},{"name":"Volkswagen","price":"36 000", "constructor":"Pier Sun","country":"Germany","certificate":"no"}, ];

const certificateCar = (arr) =>
   arr.map(({certificate,...rest}) =>({...rest,certificate_car:certificate}))

console.log(certificateCar(arr))


推荐阅读