如何用javascript比较多个数组,在每个数组中只得到相同时间的结果

How to compare multiple array get result only same time in each array with javascript?

本文关键字:数组 结果 同时间 javascript 何用 比较      更新时间:2023-09-26

如何用javascript比较多个数组,在每个数组中只得到相同时间的数组结果?考虑性能

var a = [10],
    b = [],
    c = [10],
    d = [10];
get []
var a = [10],
    b = [10],
    c = [10],
    d = [10];
get [10]
var a = [0, 1, 2],
    b = [1, 2],
    c = [0, 1, 2],
    d = [0, 1, 2, 3];
get [1, 2]

此解决方案的特点是使用非破坏性算法来获取两个数组(intersection)和一组数组(intersections)的交集。

function intersection(a, b) {
    var array = [];
    a.forEach(function (aa) {
        b.some(function (bb) {
            if (aa === bb) {
                array.push(aa);
                return true;
            }
        });
    });
    return array;
}
function intersections(array) {
    return array.reduce(function (a, b) {
        return intersection(a, b);
    });
}
document.write('<pre>' + JSON.stringify(intersections([[10], [], [10], [10]]), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(intersections([[10], [10], [10], [10]]), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(intersections([[0, 1, 2], [1, 2], [0, 1, 2], [0, 1, 2, 3]]), 0, 4) + '</pre>');

_.交集是单向的:)

_.intersection([1, 2], [4, 2], [2, 1]);
// → [2]

参见Lodash。如果你的问题更多是出于实用而非学术原因,这是有用的。没有必要重新发明轮子,除非只是为了学习。