这可能是重复的,但我不确定。
我有以下数组:
[
{
id: "object1"
},
{
id: "object2"
},
{
id: "object3"
}
]
诀窍是,数组是动态的,因此,此数组对象的全局ID有所不同。例如,在一种情况下,array [1]可以是ID为“ object1”的对象,在另一种情况下,可以为ID为“ object3”的对象。
如何根据id字符串查询此数组并将数组索引作为输出?
答案 0 :(得分:3)
reduce
放入由id
索引的对象,其值是该id
对象在原始数组中的索引,然后可以使用简单的对象查找: / p>
const input = [
{
id: "object1"
},
{
id: "object2"
},
{
id: "object3"
}
];
const indexedById = input.reduce((a, { id }, i) => {
a[id] = i;
return a;
}, {});
console.log(indexedById.object2); // index of 1 in input
.findIndex
是另一种可能性,但与对象查找相比,它的时间复杂度更差。
答案 1 :(得分:2)
数组有一个findIndex
,所以您可以执行const findById = (x) => xs.findIndex(({ id }) => id === x)
,其中x
是您的id字符串,xs
是您的对象数组。