JavaScript Объект. Изменить имя ключа объектов в массиве - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть массив объектов, подобных этому примеру:

[
  { id: 44, message: 'abcd', name: 'example1' },
  { id: 44, message: 'efgh', name: 'example2' },
  { id: 45, message: 'ijkl', name: 'example3' },
  { id: 45, message: 'mnop', name: 'example4' },
]

Как вы можете видеть, значение id повторяется. Теперь мне нужно изменить имя ключа «name» на «lastName» только для второго повторного объекта:

[
  { id: 44, message: 'abcd', name: 'example1' },
  { id: 44, message: 'efgh', lastName: 'example2' },
  { id: 45, message: 'ijkl', name: 'example3' },
  { id: 45, message: 'mnop', lastName: 'example4' },
]

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Вы можете сохранить last id дорожку и modify возвращаемый объект в map loop

Для несортированного списка:

let data = [
  { id: 44, message: "abcd", name: "example1" },
  { id: 44, message: "efgh", name: "example2" },
  { id: 45, message: "ijkl", name: "example3" },
  { id: 45, message: "mnop", name: "example4" },
];
let idMap = new Set();
const result = data.map((item) => {
  if (idMap.has(item.id)) {
    const { name: lastName, ...rest } = item;
    item = { ...rest, lastName };
  } else {
    idMap.add(item.id);
  }
  return item;
});
console.log(result);

Примечание: данные должны быть отсортированы по идентификатору.

let data = [
  { id: 44, message: "abcd", name: "example1" },
  { id: 44, message: "efgh", name: "example2" },
  { id: 45, message: "ijkl", name: "example3" },
  { id: 45, message: "mnop", name: "example4" },
];
let lastId = "";
const result = data.map((item) => {
  if (lastId === item.id) {
    const { name: lastName, ...rest } = item;
    item = { ...rest, lastName };
    lastId = "";
  } else {
    lastId = item.id;
  }
  return item;
});

console.log(result);
0 голосов
/ 27 апреля 2020

Вы можете сохранить id s каждого элемента и переименовать ключ с name на lastName, если элемент с этим идентификатором уже был посещен.

let list = [
            { id: 44, message: 'abcd', name: 'example1' },
            { id: 44, message: 'efgh', name: 'example2' },
            { id: 45, message: 'ijkl', name: 'example3' },
            { id: 45, message: 'mnop', name: 'example4' },
           ];
let checked = [];
list.forEach(function (item) {
     if(checked.includes(item.id)){
          item['lastName'] = item['name'];
          delete item['name'];
     }else{
          checked.push(item.id);
     }
});
console.log(list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...