Heim  >  Artikel  >  Web-Frontend  >  So ermitteln Sie, ob eine JavaScript-Variable ein Array oder ein Objekt ist. Ausführliche Erklärung des Antwortcodes

So ermitteln Sie, ob eine JavaScript-Variable ein Array oder ein Objekt ist. Ausführliche Erklärung des Antwortcodes

伊谢尔伦
伊谢尔伦Original
2017-07-26 11:45:001220Durchsuche

Wie kann man feststellen, ob eine JavaScript-Variable ein Array oder ein Objekt ist?

Antwort:
1. Wenn Sie nur typeof verwenden, um zu überprüfen, ob es sich um ein Array oder ein Objekt handelt, wird „objec“ zurückgegeben.
Eine mögliche Antwort auf diese Frage besteht darin, zu prüfen, ob die Variable ein Objekt ist und ob die Variable eine numerische Länge hat (die Länge kann auch 0 sein, wenn es sich um ein leeres Array handelt).
Das Parameterobjekt [Argumentobjekt] (alle an die angegebene Funktion übergebenen Parameter) kann jedoch auch auf die obige Methode angewendet werden. Technisch gesehen ist das Parameterobjekt kein Array.
Außerdem funktioniert diese Methode nicht, wenn ein Objekt ein.length-Attribut hat.

// Real array 正在的数组 
var my_array = []; 
// Imposter! 冒名顶替的! 
var my_object = {}; 
my_object.length = 0; 
// Potentially faulty 潜在的错误 
function is_this_an_array(param) { 
if (typeof param === 'object' && !isNaN(param.length)) { 
console.log('Congrats, you have an array!'); 
} 
else { 
console.log('Bummer, not an array'); 
} 
} 
// Works 成功 
is_this_an_array(my_array); 
// Works, but is incorrect 成功了,但是不正确 
is_this_an_array(my_object);


2. Eine andere Antwort auf diese Frage besteht darin, eine verstecktere Methode zu verwenden und die toString()-Methode aufzurufen, um zu versuchen, die Variable in einen String umzuwandeln, der ihren Typ darstellt.
Diese Methode ist für echte Arrays möglich; wenn das Parameterobjekt in einen String konvertiert wird und [Objektargumente] zurückgegeben wird, schlägt die Konvertierung fehl.
Die Konvertierung schlägt auch für Objektklassen fehl, die numerische Längenattribute enthalten.

// Real array 真正的数组 
var my_array = []; 
// Imposter! 冒名顶替的! 
var my_object = {}; 
my_object.length = 0; 
// Rock solid 坚如磐石(检验函数) 
function is_this_an_array(param) { 
if (Object.prototype.toString.call(param) === '[object Array]') { 
console.log('Congrats, you have an array!'); 
} 
else { 
console.log('Bummer, not an array'); 
} 
} 
// Works 成功了 
is_this_an_array(my_array); 
// Not an array, yay! 不是数组(array)! 
is_this_an_array(my_object);


3. Darüber hinaus ist „instanceof“ eine perfekt geeignete Operation in einer Multi-Frame-DOM-Umgebung, die möglicherweise unzuverlässig ist.

var my_array = []; 
if (my_array instanceof Array) { 
console.log('Congrats, you have an array!'); 
}


4. Für Javascript 1.8.5 (ECMAScript 5) kann der Variablenname .isArray() diesen Zweck erreichen

var my_array = []; 
if (Array.isArray(my_array)) { 
console.log('Congrats, you have an array!'); 
}


Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob eine JavaScript-Variable ein Array oder ein Objekt ist. Ausführliche Erklärung des Antwortcodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn