Как сравнить два массива разной длины, если вы не знаете длину каждого из них в JavaScript? - PullRequest
5 голосов
/ 18 ноября 2011

Я застрял в этом. У меня есть 2 массива, я не знаю длину каждого из них, они могут быть одинаковой длины или нет, я не знаю, но мне нужно создать новый массив с числами, не являющимися общими только для a (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{}  

Я не знаю, почему мой код никогда не достигает первого условия, и я не знаю, что делать, когда b имеет большую длину, чем a.

Ответы [ 2 ]

9 голосов
/ 18 ноября 2011

Кажется, в вашем коде есть логическая ошибка, если я правильно понимаю ваши требования.

Этот код помещает все элементы, которые находятся в a, которые не находятся в b, в 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]

2 голосов
/ 18 ноября 2011

Попробуйте это

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...