如果我们想在对象数组中查找索引,这非常简单。下面的例子
let a = [
{prop1:"abc",prop2:"qwe"},
{prop1:"bnmb",prop2:"yutu"},
{prop1:"zxvz",prop2:"qwrq"}];
let index = a.findIndex(x => x.prop2 ==="yutu");
console.log(index);
我有一个地图对象,如下所示
let input = new Map([
[
"gfg4343434333r",
{ "group": 1, "groupId": "ae027a9e56a2" }
],
[
"5ae027a9e56a2",
{ "group": 2, "groupId": "434346456454" }
],
[
"de027a9e56a2",
{ "group": 3, "groupId": "43343vvfbrrt4445" }
],
])
正如你所看到的,这个地图对象有一个键值对。假设我有一个
input2
作为 5ae027a9e56a2
我需要找出哪个键与这个 input2
匹配并获取它在 input
中的位置。在这种情况下 5ae027a9e56a2
与第二个元素匹配。一旦匹配,我想知道索引,以便我可以向上一级并获取其前一个元素值。
在这种情况下如何找到地图对象中的索引以及如何到达索引1?有人可以在这里解释一下吗?
如果您正在处理“原始”输入(例如 JSON 数据),则它不应该位于
Map
中。
你可以在侧面建立一个索引查找的“键”
Map
,可以用来加速索引检查。
const input = [
["gfg4343434333r", {
"group": 1,
"groupId": "ae027a9e56a2"
}],
["5ae027a9e56a2", {
"group": 2,
"groupId": "434346456454"
}],
["de027a9e56a2", {
"group": 3,
"groupId": "43343vvfbrrt4445"
}],
]
// Build a lookup map of "key" to index
const keyToIndex = input.reduce((m, [k], i) => m.set(k, i), new Map)
console.log(getPreviousIndex('gfg4343434333r')) // -1
console.log(getPreviousIndex('5ae027a9e56a2')) // 0
console.log(getPreviousIndex('de027a9e56a2')) // 1
function getPreviousIndex(key) {
let previousIndex = keyToIndex.get(key) - 1
return previousIndex >= 0 ? previousIndex : -1
}