繁体   English   中英

如果您不知道javascript中每个数组的长度,如何比较两个不同长度的数组?

[英]how to compare two arrays of different length if you dont know the length of each one in javascript?

我陷入了困境。 我有 2 个数组,我不知道每个数组的长度,它们可以是相同的长度,也可以不是,我不知道,但我需要创建一个新数组,其中的数字在 (2, 10)。

对于这种情况:

    var a = [2,4,10];
    var b = [1,4];

    var newArray = [];

    if(a.length >= b.length ){
        for(var i =0; i < a.length; i++){
            for(var j =0; j < b.length; j++){
                if(a[i] !=b [j]){
                    newArray.push(b);        
                }        
            }
        }
    }else{}  

如果我正确理解您的要求,您的代码中似乎存在逻辑错误。

此代码将把不在ba所有元素放入newArray

var a = [2, 4, 10];
var b = [1, 4];

var newArray = [];

for (var i = 0; i < a.length; i++) {
    // we want to know if a[i] is found in b
    var match = false; // we haven't found it yet
    for (var j = 0; j < b.length; j++) {
        if (a[i] == b[j]) {
            // we have found a[i] in b, so we can stop searching
            match = true;
            break;
        }
        // if we never find a[i] in b, the for loop will simply end,
        // and match will remain false
    }
    // add a[i] to newArray only if we didn't find a match.
    if (!match) {
        newArray.push(a[i]);
    }
}

澄清,如果

a = [2, 4, 10];
b = [4, 3, 11, 12];

然后newArray[2,10]

试试这个

var a = [2,4,10]; 
var b = [1,4]; 
var nonCommonArray = []; 
for(var i=0;i<a.length;i++){
    if(!eleContainsInArray(b,a[i])){
        nonCommonArray.push(a[i]);
    }
}

function eleContainsInArray(arr,element){
    if(arr != null && arr.length >0){
        for(var i=0;i<arr.length;i++){
            if(arr[i] == element)
                return true;
        }
    }
    return false;
}

我发现这个解决方案只使用了filter()<\/code>和include()<\/code>方法,这是一个非常简单的方法。

filter()<\/code>方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

includes()<\/code>方法确定数组是否在其条目中包含某个值,并根据需要返回 true 或 false。

function compareArrays(a, b) {
  return a.filter(e => b.includes(e));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM