Cel mai simplu cod pentru intersecția matricelor din JavaScript (2/6)

Răspuns 10 Tim în jos

Pentru matricele care conțin numai lanțuri sau numere, puteți face ceva cu clasificarea, în funcție de unele dintre celelalte răspunsuri. Pentru cazul general al matricelor obiectelor arbitrare, nu cred că puteți evita să o faceți pe termen lung. Următoarele vă vor oferi intersecția oricărui număr de matrice furnizate ca parametri pentru arrayIntersection

var arrayContains = Array.prototype.indexOf ? function(arr, val) { return arr.indexOf(val) > -1; } : function(arr, val) { var i = arr.length; while (i--) { if (arr === val) { return true; } } return false; };function arrayIntersection() { var val, arrayCount, firstArray, i, j, intersection = , missing; var arrays = Array.prototype.slice.call(arguments); // Convert arguments into a real array // Search for common values firstArray = arrays.pop(); if (firstArray) { j = firstArray.length; arrayCount = arrays.length; while (j--) { val = firstArray; missing = false; // Check val is present in each remaining array i = arrayCount; while (!missing && i--) { if ( !arrayContains(arrays, val) ) { missing = true; } } if (!missing) { intersection.push(val); } } } return intersection;}arrayIntersection( , , ); // Gives ; 

Leave a Comment

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *