@ua30

Как заменить ключи или значения в массиве?

Добрый день!

Есть такой объект-массив (не знаю как точно правильно его назвать):

{"key":
	[
		{"id":"key","data_1":"data1","data2":"data2"},
		{"id":"key","data_1":"data1","data2":"data2"},
		{"id":"key","data_1":"data1","data2":"data2"},
	]
}


Мне надо заменить в нем все ключи data_1 на data_2 (и data_2 на data_1 соответственно). Ну ИЛИ заменить все значения data1 на data2 (и наоборот) - сути не меняет, что будет красивее и производительней. Производительность критична - все крутится в браузере у клиентов, самый большой массив весить чуть более 1 мб, не мало...

Спасибо!
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Быстрее всего будет не создавать новых массивов и объектов, а пройтись циклом. В идеале даже функций не вызывать.
let obj = {"key":
  [
    {"id":"key","data_1":"data1","data_2":"data2"},
    {"id":"key","data_1":"data1","data_2":"data2"},
    {"id":"key","data_1":"data1","data_2":"data2"},
  ]
};

let arr = obj.key;
for (let i=arr.length-1; i>=0; i--) {
  let item = arr[i];
  let t = item.data_1
  item.data_1 = item.data_2
  item.data_2 = t
}


По сути вопрос в том, как поменять переменные x и y местами:
let temp = x
x = y
y = temp
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
wapster92
@wapster92 Куратор тега JavaScript
const obj = {"key":
  [
    {"id":"key","data_1":"data1","data2":"data2"},
    {"id":"key","data_1":"data1","data2":"data2"},
    {"id":"key","data_1":"data1","data2":"data2"},
  ]
}

const arr = obj.key.map(n => ({...n, data_1: n.data2, data2: n.data_1}))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы