Javascript 比较两个数组和唯一值计数?

Javascript 比较两个数组和唯一值计数?,javascript,arrays,compare,Javascript,Arrays,Compare,函数公共元素(array1,array2){ var计数=0; 对于(变量i=0;i(计数[v]=(计数[v]| | 0)-1)>=0&&&++count); 返回计数; } log(commonElement([5,2,8,9,4,7],[3,2,9,5,7]); log(commonElement([5,2,2,8,9,4,7],[3,2,9,5,7]); log(commonElement([2,2],[2,2])您可以从第一个数组向上计数相同的项目,从第二个数组向下计数,并检查id计数是

函数公共元素(array1,array2){
var计数=0;
对于(变量i=0;ilog(commonElement([5,2,8,9,4,7],[3,2,9,5,7])
首先克隆一个数组(以避免变异),然后在另一个数组上迭代,使用
findIndex
在克隆的数组中查找匹配的元素。如果存在,请将其拼接并加1以计数:

函数公共元素(array1,array2){
常量arr1=array1.slice();
让计数=0;
用于(阵列常数2){
常数索引=arr1.indexOf(val);
如果(索引!=-1){
计数++;
arr1.拼接(索引1);
}
}
返回计数;
}
log(commonElement([5,2,2,8,9,4,7],[3,2,9,5,7]))

log(commonElement([2,2],[2,2])
首先克隆一个数组(以避免变异),然后在另一个数组上迭代,使用
findIndex
在克隆的数组中查找匹配的元素。如果存在,请将其拼接并加1以计数:

函数公共元素(array1,array2){
常量arr1=array1.slice();
让计数=0;
用于(阵列常数2){
常数索引=arr1.indexOf(val);
如果(索引!=-1){
计数++;
arr1.拼接(索引1);
}
}
返回计数;
}
log(commonElement([5,2,2,8,9,4,7],[3,2,9,5,7]))

log(commonElement([2,2],[2,2])
只需几行代码即可

vararray1=[5,2,2,8,9,4,7];
var array2=[3,2,9,5,7];
var common=array1.filter(函数(obj){return array2.indexOf(obj)=-1;});

console.log(通用)只需几行代码即可

vararray1=[5,2,2,8,9,4,7];
var array2=[3,2,9,5,7];
var common=array1.filter(函数(obj){return array2.indexOf(obj)=-1;});

console.log(通用)您可以从第一个数组向上计数相同的项目,从第二个数组向下计数,并检查id计数是否大于或等于零,结果的计数为1

函数公共元素(array1,array2){
变量计数={},
计数=0;
数组1.forEach(v=>计数[v]=(计数[v]| | 0)+1);
数组2.forEach(v=>(计数[v]=(计数[v]| | 0)-1)>=0&&&++count);
返回计数;
}
log(commonElement([5,2,8,9,4,7],[3,2,9,5,7]);
log(commonElement([5,2,2,8,9,4,7],[3,2,9,5,7]);

log(commonElement([2,2],[2,2])您可以从第一个数组向上计数相同的项目,从第二个数组向下计数,并检查id计数是否大于或等于零,结果的计数为1

函数公共元素(array1,array2){
变量计数={},
计数=0;
数组1.forEach(v=>计数[v]=(计数[v]| | 0)+1);
数组2.forEach(v=>(计数[v]=(计数[v]| | 0)-1)>=0&&&++count);
返回计数;
}
log(commonElement([5,2,8,9,4,7],[3,2,9,5,7]);
log(commonElement([5,2,2,8,9,4,7],[3,2,9,5,7]);

log(commonElement([2,2],[2,2])获取两个数组中共有的元素数的最简单方法是:

// initialise two arrays

var listA = [1,2,2,3,4,5,6,7];
var listB = [2,4,6,8];


function checkCommonElements(array1, array2) {

    // get common values from array

    var filterValues = array1.filter(value => -1 !== array2.indexOf(value))

    // map values from without repeating values

    const arr = [];
    filterValues.map((x) => {
        if (arr.indexOf(x) === -1) {
            arr.push(x);
        }
    })

    // return the length of array

    return arr.length;
}

var result = checkCommonElements(listA, listB);
console.log(result);

// output is 3.

提供两个数组中的公共元素数,无需重复任何项目。

获取两个数组中公共元素数的最简单方法是:

// initialise two arrays

var listA = [1,2,2,3,4,5,6,7];
var listB = [2,4,6,8];


function checkCommonElements(array1, array2) {

    // get common values from array

    var filterValues = array1.filter(value => -1 !== array2.indexOf(value))

    // map values from without repeating values

    const arr = [];
    filterValues.map((x) => {
        if (arr.indexOf(x) === -1) {
            arr.push(x);
        }
    })

    // return the length of array

    return arr.length;
}

var result = checkCommonElements(listA, listB);
console.log(result);

// output is 3.

提供两个数组中的公共元素数,而不重复任何项目。

如果两个数组都有相同的重复元素,该怎么办?你想从
([2,2],[2,2])
中得到什么?1或2?你能描述一下你的目标是什么吗?请添加更多的用例和它想要的结果。@CertainPerformance如果你比较[2,2]&&[2,2],那么输出是4代码有什么问题吗?我不是问代码的输出是什么(我自己可以运行它),我是问你想要它的输出是什么(
([2,2],[2,2])
)-您所需的算法不明确-如果两个数组具有相同的重复元素怎么办?你想从
([2,2],[2,2])
中得到什么?1或2?你能描述一下你的目标是什么吗?请添加更多的用例和它想要的结果。@CertainPerformance如果你比较[2,2]&&[2,2],那么输出是4代码有什么问题吗?我不是问代码的输出是什么(我自己可以运行它),我是问你想要它的输出是什么(
([2,2],[2,2])
)-您想要的算法不清楚