Hier eine Schnittfunktion basierend auf Array.prototype.filter
function intersect(a, b) {
var t;
if (b.length > a.length) t = b, b = a, a = t; // indexOf to loop over shorter
return a.filter(function (e) {
return b.indexOf(e) > -1;
});
}
var arr1 = ["mike", "sue", "tom", "kathy", "henry"];
arr2 = ["howey", "jim", "sue", "jennifer", "kathy", "hank", "alex"];
intersect(arr1, arr2); // ["sue", "kathy"]
Sie könnten auch die folgenden
var arr1 = ['sue', 'sue', 'kathy'],
arr2 = ['kathy', 'kathy', 'sue'];
Die oben jetzt würde ["sue", "sue", "kathy"]
zu betrachten. Wenn du keine Duplikate willst, könntest du einen weiteren Filter dafür machen. Dies würde auch die Ergebnisse standardisieren. das heißt
return a
.filter(/* .. */) // same as before
.filter(function (e, i, c) { // extra step to remove duplicates
return c.indexOf(e) === i;
});
das Hinzufügen wird nun das gleiche Ergebnis wie die vorherigen Arrays (["sue", "kathy"]
) zurückkehren, auch wenn es Duplikate waren.
Wollen Sie in diesem Fall Sue und Kathy in Ihren Ergebnissen sein? – ggbranch
Ich suche nach den Übereinstimmungen, richtig. – Justin