在 JavaScript 中计算两个数组的交集[重复]

2024-02-27

给定两个长度不等的数组:

var arr1 = ["mike", "sue", "tom", "kathy", "henry"]; //arr1.length = 5
var arr2 = ["howey", "jim", "sue", "jennifer", "kathy", "hank", "alex"]; //arr2.length = 7

如何找到两个数组共有的值?在这种情况下"sue" and "kathy"应该被退回。


这是一个基于的交集函数Array.prototype.filter https://developer.mozilla.org/en/docs/JavaScript/Reference/Global_Objects/Array/filter

function intersect(a, b) {
    var t;
    if (b.length > a.length) t = b, b = a, a = t; // indexOf to loop over shorter
    return a.filter(function (e) {
        return b.indexOf(e) > -1;
    });
}

var arr1 = ["mike", "sue", "tom", "kathy", "henry"];
    arr2 = ["howey", "jim", "sue", "jennifer", "kathy", "hank", "alex"];

intersect(arr1, arr2); // ["sue", "kathy"]

您可能还需要考虑以下事项

var arr1 = ['sue', 'sue', 'kathy'],
    arr2 = ['kathy', 'kathy', 'sue'];

上面现在给出["sue", "sue", "kathy"]。如果您不想重复,您可以对此进行进一步的过滤。这也将使结果标准化。 IE。

return a
    .filter(/* .. */) // same as before
    .filter(function (e, i, c) { // extra step to remove duplicates
        return c.indexOf(e) === i;
    });

添加它现在将返回与之前的数组相同的结果(["sue", "kathy"]),即使有重复项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中计算两个数组的交集[重复] 的相关文章

随机推荐