Ich habe diesen Codepegel http://codepen.io/PiotrBerebecki/pen/ZWxvzm erstellt, wenn ich versuche, ein Array zu finden, das symmetrische Differenz von zwei oder mehr Arrays enthält.Ist es möglich, meine symmetrische Differenzfunktion geringfügig zu ändern, so dass sie eine unbekannte Anzahl von Argumenten akzeptieren kann?
Meine Funktion funktioniert OK, aber nur wenn vier Argumente übergeben werden. Wie kann ich meine Funktion so ändern, dass sie eine unbekannte Anzahl von Argumenten akzeptiert? Es gibt einen potenziell wiederholbaren Codeblock, der vielleicht Teil einer for
Schleife oder reduce
/map
Methoden sein könnte. Ich kann nicht herausfinden, wie ich das erreichen kann.
symmetricDifference([1,2,3,4], [3,4,5,6], [2,4,6,7], [8,9])
// should return an array containing [1,4,5,7,8,9]
symmetricDifference([1,2,3,4], [3,4,5,6])
// should return an array containing [1,2,5,6]
var arrA = [1,2,3,4];
var arrB = [3,4,5,6];
var arrC = [2,4,6,7];
var arrD = [8,9];
function symmetricDifference(arr) {
let args = Array.prototype.slice.call(arguments);
let result = [];
result = args[0].concat(args[1]).filter(function(item) {
return args[0].indexOf(item) === -1 || args[1].indexOf(item) === -1;
});
result = result.concat(args[2]).filter(function(item) {
return result.indexOf(item) === -1 || args[2].indexOf(item) === -1;
});
result = result.concat(args[3]).filter(function(item) {
return result.indexOf(item) === -1 || args[3].indexOf(item) === -1;
});
return result;
}
Ja, verwenden Sie eine einfache 'for' Schleife über' args'. Bitte zeigen Sie uns Ihren Versuch, wenn Sie nicht erfolgreich waren. – Bergi
Hinweis: Beginnen Sie mit 'var result = args [0];' – Bergi
Ist es immer in Vierergruppen? Gruppieren Sie Ihre Argumente in Vierergruppen und wiederholen Sie diese Gruppen, indem Sie jedes der vier Elemente in der Gruppe wie in Ihrem Beispiel auswählen. – ste2425