O código máis sinxelo para a intersección de matrices en JavaScript (2/6)

Responder 10 Tim Down

Para as matrices que conteñen só cadeas ou números, pode facer algo coa clasificación, de acordo con algunhas das outras respostas. Para o caso xeral de Matrices de obxectos arbitrarios, non creo que poida evitar facelo a longo prazo. A continuación pode darlle a intersección de calquera número de matrices proporcionadas como parámetros para 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

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *