Wie erstelle ich ein Array, wenn es noch nicht existiert? Mit anderen Worten, wie wird eine Variable standardmäßig auf ein leeres Array gesetzt?
Antworten:
Wenn Sie überprüfen möchten, ob ein Array x vorhanden ist, und es erstellen möchten, können Sie dies tun
x = ( typeof x != 'undefined' && x instanceof Array ) ? x : []
Array.isArray(x): stackoverflow.com/a/38670091/271442
if (Array.isArray(array) && array.length)Weitere Informationen
var arr = arr || [];
arrbereits im jeweiligen Geltungsbereich definiert ist, warum dann var ...? Sie können einfach tunarr = arr || [];
vargehisst werden und daher immer einfach werden []? Edit: nvm, ich irre mich: D
const list = Array.isArray(x) ? x : [x];
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
Oder wenn es x sich um ein Array handeln könnte und Sie sicherstellen möchten, dass es eines ist:
const list = [].concat(x);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
x is not definedin beiden Fällen
xist die Variable, die ein Array sein kann oder nicht. Das definieren Sie. Dies ist nur ein Beispielcode ...
Sie können den typeofOperator verwenden , um auf undefiniert zu testen, und den instanceofOperator , um zu testen, ob es sich um eine Instanz von Array handelt :
if (typeof arr == "undefined" || !(arr instanceof Array)) {
var arr = [];
}
undefinedes sich nicht um eine Array-Instanz handelt.
arrnoch nicht definiert ist
Wenn Sie überprüfen möchten, ob das Objekt bereits ein Array ist , können Sie die folgenden Methoden verwenden , um die bekannten Probleme des instanceofOperators bei der Arbeit in DOM-Umgebungen mit mehreren Frames zu vermeiden Object.prototype.toString:
arr = Object.prototype.toString.call(arr) == "[object Array]" ? arr : [];
arrnicht deklariert wird, ein ReferenceErrorWille auf die rechte Seite der Aufgabe geworfen wird ...
ArrayKonstruktor instanziiert wurde. Dies kann beim Erstellen von Skripten über Frames hinweg auftreten.