在最少的运行中有效地查找和返回多个值的数组位置

时间:2018-12-01 14:55:09

标签: javascript arrays search arraylist

以最少的运行次数查找并返回多个值的数组位置

var indexes = getAllIndexes(Cars, ["Nano","BMW"]);

//should return 0 2 3 5 6

如何搜索多个项目并在较短的时间内更快,更有效地返回位置

tuple

1 个答案:

答案 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);