我有一个数组
var arr = [{name:"Steve",toppedIn:"Biology"},
{name:"Carol",toppedIn:"Maths"},
{name:"Steve",toppedIn:"Chemistry"}];
我想获取arr.name中名称的最后一个索引。findIndex()将给出第一个,在这种情况下我该如何使用lastIndex?
答案 0 :(得分:1)
首先反转数组,然后检查是否找到该值,然后从数组的最后一个索引中减去反转的索引,以获得正确的答案。
var arr = [{name:"Steve",toppedIn:"Biology"},{name:"Carol",toppedIn:"Maths"},{name:"Steve",toppedIn:"Chemistry"}];
const lastIndexOfName = name => {
let index = [...arr].reverse().findIndex(person => person.name == name);
console.log(index);
console.log(arr.length);
return index >= 0 ? arr.length - 1 - index : index;
}
console.log(lastIndexOfName("Steve"));
答案 1 :(得分:0)
在JS中,您必须使用
array [array.length-1]
访问最后一个元素
答案 2 :(得分:0)
lastIndex = (arr.length-1) - arr.reverse().findIndex(x=>x.name==="Steve");
arr.reverse();
这也可以,但是我不知道哪一个表现更好。
答案 3 :(得分:0)
我为这个问题做了一个简化的包装:
var arr = [ {name:"Steve",toppedIn:"Biology" } // 0 Steve
, {name:"Carol",toppedIn:"Maths" } // 1
, {name:"Carol",toppedIn:"Maths" } // 2
, {name:"Steve",toppedIn:"Chemistry"} // 3 Steve
, {name:"Carol",toppedIn:"Maths" } // 4
, {name:"Carol",toppedIn:"Maths" } // 5
, {name:"Steve",toppedIn:"Chemistry"} // 6 <-- last Steve
, {name:"Carol",toppedIn:"Maths" } // 7
, {name:"Carol",toppedIn:"Maths" } // 8
];
Array.prototype.FindLastIndex = function( CallFunction ) {
var r = -1, t = Object(this);
for (let i=t.length;i-->0;) {
if (CallFunction(t[i])) {
r=i;
break
}
}
return r
};
console.log ('last Steve is: index= ', arr.FindLastIndex(a=>a.name=='Steve') ) // 6