假设,
我有一个带有属性details : {"name","id"}
的对象,现在有一个保存详细信息集合的数组。现在假设,将带有{name:max, id:55}
的对象多次推入数组。如何使用TypeScript从该数组中找出最后输入的{name:max,id:55}
。
答案 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最后位于的数组的索引。