Как я могу узнать последний введенный объект в массиве объектов, где подобные объекты могут быть введены несколько раз - PullRequest
0 голосов
/ 22 января 2019

Предположим, У меня есть объект со свойствами, details : {"name","id"}, теперь есть массив, который содержит коллекцию деталей. Теперь предположим, что объект с {name:max, id:55} помещается в массив более одного раза. как узнать последний введенный {name:max,id:55} из этого массива, используя TypeScript.

Ответы [ 3 ]

0 голосов
/ 22 января 2019

Вы можете сделать это с чистым JavaScript и lastIndexOf:

const myArray = [{
  name: "max",
  id: 55
}, {
  name: "john",
  id: 13
}, {
  name: "susan",
  id: "123"
}, {
  name: "max",
  id: 55
}];

const lastEntered = (name, id) => {
    var matches = myArray.filter(e => e.name == name && e.id == id);
    return matches.length - 1;
}

console.log(lastEntered("max", 55));
0 голосов
/ 22 января 2019

Вы можете использовать Reduce, чтобы изменить массив на объект, где ключ - это значение от объекта, а значение - последний индекс этого ключа.

const details = [{ name: 'max', id: 55 }];
const detailsMap = details.reduce((acc, person, index) => {
  acc[person.id] = index;
  return acc;
}, {});
const lastIndexOfMax = detailsMap[55];

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

0 голосов
/ 22 января 2019

Массив является последним в структуре данных «первым вышел».

Таким образом, последний элемент in будет занимать элемент с наибольшим индексом.

Таким образом, вы можете получить элемент по array[array.length-1]

...