通过比较2个数组来查找公共计数

时间:2018-03-15 14:10:04

标签: arrays lodash

我有2个阵列:

arr1 = [1,2,3];  
arr2 = [2,3,4];

他们有两个共同的价值观。我想比较一下得到答案2。 有lodash函数吗?

3 个答案:

答案 0 :(得分:3)

是的,有一个名为intersection的lodash函数。

因此,下面是您可以用来查找两个数组的公共值的长度的代码。

arr1 = [1,2,3]
arr2 = [2,3,4]

console.log(_.intersection(arr1, arr2).length);

答案 1 :(得分:1)

是的,您可以使用_.intersection并获取常用值



var arr1 = [1,2,3];
var arr2 = [2,3,4];

console.log(_.intersection(arr1, arr2));

<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.5/lodash.min.js"></script>
&#13;
&#13;
&#13;

虽然它可以获得两个数组的常用值,但在这种情况下2,3不仅仅是2。

如果您想要的是常用值的数量,只需

_.size(_.intersection(arr1, arr2));

或者您可以创建自己的功能组成另外两个:

let numberOfCommonValues = _.flowRight(_.size, _.intersection);
console.log(numberOfCommonValues([1,2,3,4,5], [1,4,5]));

希望它有所帮助。

答案 2 :(得分:0)

我无法准确地告诉你是否有一个lodash函数可以做到这一点,但它似乎有点微不足道。
只需继续定义一个var,然后遍历其中一个数组,并将该值与另一个数值进行比较......

function countCommonalities(arr1, arr2) {
    var counter = 0;
    for(var i = 0; i < arr1.length; i++) {
        for(var z = 0; z < arr2.length; z++) {
            if(arr1[i] === arr2[z]) {
                counter++;
            }
        }
    }

    return counter;
}