il codice più semplice per l’intersezione di matrici in JavaScript (2/6)

Risposta 10 Tim Down

Per matrici che contengono solo catene o numeri, puoi fare qualcosa con la classificazione, secondo alcune delle altre risposte. Per il caso generale di matrici di oggetti arbitrari, non penso che tu possa evitare di farlo a lungo termine. Di seguito ti darà l’intersezione di qualsiasi numero di matrici fornite come parametri per 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

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *