Javascript: .push ist nicht eine Funktion

Ich habe ein problem mit meinem code:

var arrays = [[1, 2, 3], [4, 5], [6]];
console.log(reduce(arrays,function(array,b){
  return array.push(b);
}));

function reduce(array,combine){
  var current = [];
  for(var i = 0;i<array.length;i += 1){
    current = combine(current,array[i]);
  }
  return current;
}
console.log(reduce([1, 2, 3, 4], function(array, b) {
  return array.push(b);
}));

//→ [1, 2, 3, 4, 5, 6]

Bekomme ich diesen Fehler:

TypeError: array.push is not a function (line 3) 

Soweit ich das verstanden habe, ist dies, weil es die Behandlung der array-argument als etwas anderes als ein array. Aber ich dachte, ich fütterte es die variable "current", das ist ein array. Kann jemand das problem erklären? Danke.

  • Yeah, gerade mitbekommen, dass. Danke.
  • warum nimmst du nicht das built-in [].reduce() ?
  • Ich vermute, er ist mit diesem als eine übung, um zu lernen, wie zu schreiben higher-level-Funktionen.
  • array.push gibt den nächsten verfügbaren index, und Sie können nicht push auf Nummer
  • Sie erkennen, können Sie etwas wie das hier tun: var flattened = [].concat.apply([],arrays) das gleiche Ergebnis zu erhalten?
  • Sie haben alle aus dieser Anmeldung, aber das nützlichste Ort gewesen wäre, habe console.log(array) im ersten reduce () - Aufruf, wie diese variable und die .push() gegen Sie ist, wo Sie immer diese Fehlermeldung.

InformationsquelleAutor Devilius | 2015-10-16
Schreibe einen Kommentar