以最少的运行次数查找并返回多个值的数组位置
var indexes = getAllIndexes(Cars, ["Nano","BMW"]);
//should return 0 2 3 5 6
如何搜索多个项目并在较短的时间内更快,更有效地返回位置
tuple
答案 0 :(得分:2)
您需要一种不同的方法,因为您要寻找的是一个值。
您可以为匹配的项目映射索引,或者为未找到的项目使用-1
,以便以后进行过滤。
const
getAllIndices = (array, needles) => array
.map((v, i) => needles.includes(v) ? i : -1)
.filter(i => i + 1);
var cars = ["Nano", "Volvo", "BMW", "Nano", "VW", "Nano"],
indices = getAllIndices(cars, ["Nano", "BMW"]);
console.log(indices);
ES5
function getAllIndices(array, needles) {
return array
.map(function (v, i) { return needles.indexOf(v) + 1 ? i : -1; })
.filter(function (i) { return i + 1; });
}
var cars = ["Nano", "Volvo", "BMW", "Nano", "VW", "Nano"],
indices = getAllIndices(cars, ["Nano", "BMW"]);
console.log(indices);