2013-05-08 3 views
1

У меня есть два многомерные массивы:JavaScript - Сравнить два многомерные массивы

первое что-то вроде (['one','one','three'],['four','five',five'],['one','one','one'])

и второй один, как это (['one','one','nine'],['one','one','one'],['two','two'],['two','two','two']...)

Теперь, что я хочу, чтобы найти матч первого индекс первого массива со вторым массивом, но должно совпадать также положение, по меньшей мере, первых двух индексов из обоих массивов, например:

first_array (['one', 'one', 'three '], [' четыре ' 'пять', пять '], [' один', 'один', 'один'])

будет соответствовать

second_array ([ 'один',» один ',' девять '], [' one ',' one ',' one '], [' two ',' two '] [' two ',' two ',' two '] ...)

и выход будет, например. 'Предупреждение (' Match ".).

Я попытался

for(i=0; i<1; i++){ 
    if(first_array[0] == second_array) console.log('Match'); 
    else console.log('No match'); 
} 

, но я постоянно получаю «Нет матч», хотя есть совпадение. P.S. в цикле 'for', мой i равен i < 1, потому что я хочу сравнить только первый индекс first_array с полным second_array.

Заранее спасибо

ответ

5
var md1 = [['one','one','three'],['four','five','five'],['one','one','one']]; 

var md2 = [['one','one','nine'],['one','one','one'],['two','two'],['two','two','two']]; 

//Iterate through all elements in first array 
for(var x = 0; x < md1.length; x++){ 

    //Iterate through all elements in second array  
    for(var y = 0; y < md2.length; y++){ 

     /*This causes us to compare all elements 
     in first array to each element in second array 
     Since md1[x] stays fixed while md2[y] iterates through second array. 
     We compare the first two indexes of each array in conditional 
     */ 
     if(md1[x][0] == md2[y][0] && md1[x][1] == md2[y][1]){ 
     alert("match found"); 
     alert("Array 1 element with index " + x + " matches Array 2 element with index " + y); 
     } 
    } 
} 

Рабочий примерhttp://jsfiddle.net/2nxBb/1/

+0

даст ему шанс, чтобы вернуться сюда через 5 минут – mihajloWR

+0

@mihajloWR Я просто заметил ошибку или два, пожалуйста, используйте обновленные , В основном я использовал md1 [y], когда я должен был использовать md1 [x], и md2 [y] –

+0

, похоже, работает. Чтобы настроить его, то нужно, но глобально - он работает. У вас есть свободное время, чтобы объяснить логику, может быть, я могу полностью ее понять? – mihajloWR

1

Возможный дубликат How to compare arrays in JavaScript?.

Для строгого сравнения массива, проверить их длину и значение следующим образом:

var a1 = [1, 2, 3]; 
var a2 = [1, 2, 3]; 

array_compare(a1, a2); 

function array_compare(a1, a2) { 
if(a1.length != a2.length) { 
    return false; 
} 
for(var i in a1) { 
    // Don't forget to check for arrays in our arrays. 
    if(a1[i] instanceof Array && a2[i] instanceof Array) { 
    if(!array_compare(a1[i], a2[i])) { 
    return false; 
    } 
    } 
    else if(a1[i] != a2[i]) { 
    return false; 
    } 
} 
return true; 
} 
Смежные вопросы