ArrayAdditionI (arr) nimm das Array von in arr gespeicherten Zahlen und // trage zurück, wenn eine beliebige Kombination von Zahlen im Array // hinzugefügt werden kann, um der größten Zahl im Array zu entsprechen // Zeichenfolge falsch. Beispiel: Wenn arr [4, 6, 23, 10, 1, 3] enthält, sollte der // -Ausgabewert true sein, weil 4 + 6 + 10 + 3 = 23 ist. Das Array // ist nicht leer, enthält nicht alle die gleichen Elemente und können // negative Zahlen enthalten. // Beispiel Testfälle // Eingabe: 5,7,16,1,2 // Ausgabe: "false" // // Eingabe: 3,5, -1,8,12 // Ausgabe : „true“Warum gibt forEach-Funktion falsche Ausgabe?
function findLargest(array){
var largest = array[0];
array.forEach(function(num){
if(num > largest){
largest = num;
}
});
return largest;
}
function ArrayAdditionI(array){
var largest = findLargest(array);
var index = array.indexOf(largest);
array.splice(index,1);
array.forEach(function(num,idx){
var sum = 0;
for(var j=0; j<array.length; j++){
if(num === array[j]){
continue;
}else{
sum+=array[j];
}
}
if(sum === largest){
return true;
}
});
return false;
}
console.log(ArrayAdditionI([4, 6, 23, 10, 1, 3]));
Hallo an alle !!, der Ausgang dieser ArrayAdditionI Funktion wahr sein sollte, aber aus irgendeinem unbekannten Grund es false.However zurückkehrt, fand ich heraus, dass es wegen der forEach Funktion ist, weil als ich forLoop benutzt habe, hat es gut funktioniert. Weiß jemand warum, wenn ich forEach benutze, gibt es mir eine falsche Ausgabe? und warum passiert das?
if (sum === large) {return true;} sonst return false – user3791775
'return' aus' forEach' wird nicht von der 'ArrayAdditionI' Funktion zurückgegeben, sondern nur von der' forEach' Funktion selbst – Hamms
' Funktion findLargest (Array) {return Math.max.apply (null, Array); } ' – MT0