Допустим, у меня есть следующая структура массива:
"stores" : [
{
id: 1,
name: 'lopd',
},
{
id: 2,
name: 'abc'
}
]
И я хочу изменить имена параметров следующим образом:
"stores" : [
{
value: 1,
label: 'lopd',
},
{
value: 2,
label: 'abc'
}
]
Как мне это сделать в ES6?
Вы можете использовать назначение деструктурирующего с рисунком объекта присвоения собственности и короткими свойствами вручную.
var stores = [{ id: 1, name: 'lopd' }, { id: 2, name: 'abc' }];
stores = stores.map(({ id: value, name: label }) => ({ value, label }));
console.log(stores);
Вы можете сделать следующее, используя функцию 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)
Только ради полноты, хотя я бы фактически использовал ответ Нины: если вы хотите на самом деле изменить исходные объекты, вы можете создавать новые свойства и 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)
Вы также можете создать новый массив, используя:
Пример:
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);