Метод замены элемента в массиве

149
16 января 2020, 21:30

У меня есть массив

[
  {  
    "name":"BMW",
    "price":"55 000",
    "color":"red",
 },
 {  
   "name":"MERSEDEC",
   "price":"63 000",
   "color":"blue",
 }
];

Нужно написать функцию которая будет на входе принимать массив и на выходе будет вместо name будет вылетать class

"class":"MERSEDEC",
"price":"63 000",
"color":"blue",

Какой метод использовать?

Answer 1

Если почему-либо требуется оставить исходный массив в первозданном виде:

let data = [{ 
    "name": "BMW", 
    "price": "55 000", 
    "color": "red", 
  }, 
  { 
 
    "name": "MERSEDEC", 
    "price": "63 000", 
    "color": "blue", 
  } 
]; 
 
function transform(arr) { 
  return arr.map(item => { 
    let newItem = Object.assign({}, item); 
    newItem.class = item.name; 
    delete newItem.name; 
    return newItem; 
  }) 
} 
 
console.log(transform(data));

Answer 2

var data = [{ 
    "name": "BMW", 
    "price": "55 000", 
    "color": "red", 
  }, 
  { 
    "name": "MERSEDEC", 
    "price": "63 000", 
    "color": "blue", 
  } 
]; 
function nameToClass(arr) { 
  arr.forEach(i => { 
    i.class = i.name; 
    delete i.name; 
  }); 
  return arr; 
} 
console.log(nameToClass(data));

Как сделать так что бы class был первым, а не в конце?

var data = [{ 
    "name": "BMW", 
    "price": "55 000", 
    "color": "red", 
  }, 
  { 
    "name": "MERSEDEC", 
    "price": "63 000", 
    "color": "blue", 
  } 
]; 
function nameToClass(arr) { 
  var str = JSON.stringify(arr); 
  str = str.replace(/name/g, "class"); 
  arr.splice(0, arr.length, ...JSON.parse(str)); 
  return arr; 
} 
console.log(nameToClass(data));

Answer 3

Если нужно заменить name на class, то можно просто сделать всё в цикле:

var items; // Ваш массив с данными.
var i;
for(i = 0; i < items.length; i++){
    items[i].class = items[i].name;
    delete items[i].name;
}
READ ALSO
Регулярное выражение для поиска даты в тексте с учетом разных форматов

Регулярное выражение для поиска даты в тексте с учетом разных форматов

Мне нужно составить регулярное выражение что бы оно находило в тексте дату в разных форматах, при том записывая в совпадения только число...

146
Смена картинки при очищение поля vuetify

Смена картинки при очищение поля vuetify

работаю c vuejs, в частности с vuetify

127
Как задать двойную шкалу у range slider?

Как задать двойную шкалу у range slider?

Нужно сделать вот такой слайдер:

119