我如何找出对象数组中最后输入的对象,可以多次输入相似的对象

时间:2019-01-22 05:48:21

标签: javascript arrays angular typescript object

假设, 我有一个带有属性details : {"name","id"}的对象,现在有一个保存详细信息集合的数组。现在假设,将带有{name:max, id:55}的对象多次推入数组。如何使用TypeScript从该数组中找出最后输入的{name:max,id:55}

3 个答案:

答案 0 :(得分:1)

您可以使用纯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));

答案 1 :(得分:0)

数组是先进先出数据结构。

所以最后一个in元素将占据索引最大的元素。

因此,您可以通过array[array.length-1]

来获取元素

答案 2 :(得分:0)

您可以使用reduce将数组更改为对象,其中键是该对象的值,并且该值是该键的最后一个索引。

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

在这里,我们将详细信息对象的ID设置为键(因为我假设每个ID是唯一的)。当我们在详细信息地图中输入该键时,它将返回以使用该ID最后位于的数组的索引。