изменить имена параметров объекта в массиве

1

Допустим, у меня есть следующая структура массива:

"stores" : [
    {
        id: 1,
        name: 'lopd',
    },
    {
        id: 2,
        name: 'abc'
    }
]

И я хочу изменить имена параметров следующим образом:

"stores" : [
    {
        value: 1,
        label: 'lopd',
    },
    {
        value: 2,
        label: 'abc'
    }
]

Как мне это сделать в ES6?

  • 0
    Вам нравится хранить объекты и массив, или это может быть новый массив с новыми объектами?
  • 0
    @NinaScholz работает новый массив с новыми объектами, просто для презентационных целей
Теги:
ecmascript-6
object
arrays

4 ответа

4
Лучший ответ

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

var stores = [{ id: 1, name: 'lopd' }, { id: 2, name: 'abc' }];

stores = stores.map(({ id: value, name: label }) => ({ value, label }));

console.log(stores);
4

Вы можете сделать следующее, используя функцию map:

let example = {
  "stores" : [
   {
    id: 1,
    name: 'lopd',
   },
   {
    id: 2,
    name: 'abc'
   }
  ]
}

let answer = example.stores.map(item => {
   return {
     value: item.id,
     label: item.name
  }
})

console.log(answer)
  • 2
    почему это было понижено?
1

Только ради полноты, хотя я бы фактически использовал ответ Нины: если вы хотите на самом деле изменить исходные объекты, вы можете создавать новые свойства и delete те, которые вы хотите отменить.

var obj = {
  stores: [{
      id: 1,
      name: 'lopd',
    },
    {
      id: 2,
      name: 'abc'
    }
  ]
}
console.log(obj.stores);
obj.stores.forEach(function(val) {
  val.value = val.id;
  val.label = val.name;
  delete val.id;
  delete val.name;
});
console.log(obj.stores);

Возможно, это не имеет большого значения (или вообще в большинстве случаев), но это единственный способ сохранить исходный объект. Другие решения заменяют все объекты в массиве на новый...

Также: это ES5, поэтому он будет работать в старых браузерах (а именно IE9)

0

Вы также можете создать новый массив, используя:

Пример:

var data = [{id: 1, name: 'lopd'}, {id: 2, name: 'abc'}];
    
var result = Array.from(data, obj => ({value: obj.id, label: obj.name}));

console.log(result);

Ещё вопросы

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