Существует функция, которая изменяет ключ «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))
2
Gregori Roberts 13 Апр 2019 в 18:51

2 ответа

Лучший ответ

Вы можете использовать деструктуризацию и изменить желаемое имя ключа и оставить все как есть.

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))
3
Code Maniac 13 Апр 2019 в 15:55
 

    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 newItem = {}
        delete Object.assign(newItem, item, {["certificate_car"]: item["certificate"] })["certificate"];
        return newItem
      })
      
    }
    console.log(certificateCar(arr)) 

Если вы хотите сделать это с помощью метода assign, это будет лучше, чем замена имен ключей

0
Emin Qasimov 13 Апр 2019 в 16:28