Метод назначения JS

1

Существует функция, которая изменяет ключ "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))
Теги:
arrays
methods

2 ответа

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))
  • 0
    Ваша версия делает код намного проще, но вопрос был о методе assign
  • 0
    @LoveGIAS вы можете использовать Object.assign({},{...rest,certificate_car:certificate}) внутри карты
0

 

    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
    да, вы правы, но вопрос был о методе assign
  • 0
    Я изменил его, эта ссылка поможет вам stackoverflow.com/questions/4647817/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню