我正在尝试在JavaScript数组中查找元素的所有实例的索引,例如“ Nano”。var Cars = ["Nano", "Volvo", "BMW", "Nano", "VW", "Nano"];我尝试了jQuery.inArray或类似地.indexOf(),但是它只给出了元素的最后一个实例的索引,在这种情况下为5。如何获得所有实例的信息?
3 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
另一种替代解决方案是使用Array.prototype.reduce():
["Nano","Volvo","BMW","Nano","VW","Nano"].reduce(function(a, e, i) {
if (e === 'Nano')
a.push(i);
return a;
}, []); // [0, 3, 5]
注意:请检查浏览器兼容性以获取reduce方法,并在需要时使用polyfill。
BIG阳
TA贡献1859条经验 获得超6个赞
您可以使用map和编写一个简单易读的解决方案filter:
const nanoIndexes = Cars
.map((car, i) => car === 'Nano' ? i : -1)
.filter(index => index !== -1);
编辑:如果您不需要支持IE / Edge(或正在转译您的代码),则ES2019给了我们flatMap,它使您可以在一个简单的方法中做到这一点:
const nanoIndexes = Cars.flatMap((car, i) => car === 'Nano' ? i : []);
添加回答
举报
0/150
提交
取消