Rumah >hujung hadapan web >tutorial js >JavaScript menentukan sama ada objek ialah petua array_javascript
Artikel ini berkongsi tiga kaedah JavaScript untuk menentukan sama ada objek ialah tatasusunan,
1 Perkara pertama yang akan kita fikirkan ialah menggunakan typeof untuk mengesan jenis data, tetapi untuk jenis asas seperti Function, String, Number, Undefined, dll., ia boleh dikesan menggunakan typeof Sebagai contoh, kodnya seperti berikut:
function test(){} console.log(typeof 1); // number console.log(typeof test); // function console.log(typeof "yunxi"); // string console.log(typeof undefined); // undefinedTetapi untuk tatasusunan atau ungkapan biasa, menggunakan typeof untuk mengesannya adalah tidak memuaskan, kerana apabila kita mengesan tatasusunan atau ungkapan biasa, jenis yang dikembalikan akan menjadi objek, seperti yang ditunjukkan dalam kod berikut:
console.log(typeof []); // object console.log(typeof /\d+/g); // object
Daripada ini, kita boleh dengan mudah memikirkan menggunakan instanceof untuk mengesan sama ada objek adalah contoh tatasusunan at it again Kod di atas untuk mengesan sama ada ia adalah tatasusunan adalah seperti berikut:
console.log([] instanceof Array); // true console.log(/\d+/g instanceof Array); // falseSeperti yang anda lihat di atas, menggunakan instanceof sememangnya boleh menentukan sama ada ia adalah elemen tatasusunan;
3. atribut pembina
Dalam JavaScript, setiap objek mempunyai atribut pembina, yang merujuk kepada pembina yang memulakan objek, seperti menentukan jenis objek yang tidak diketahui, jadi kita boleh menulis kaedah seperti berikut, kodnya adalah seperti berikut:
function isArray(obj) { return typeof obj == 'object' && obj.constructor == Array } // 测试demo console.log(isArray([])); // true var a = {"a":1}; console.log(isArray(a)); // false var b = [1,2,3]; console.log(isArray(b)); // true console.log(isArray(/\d+/g));// falseSeperti yang anda lihat di atas, anda juga boleh menentukan sama ada ia adalah elemen tatasusunan dengan memanggil kaedah isArray.
var iframe = document.createElement('iframe'); document.body.appendChild(iframe); xArray = window.frames[window.frames.length-1].Array; var arr = new xArray("1","2","3","4","5"); //这个写法IE下是不支持的,标准浏览器firefox,chrome下有 console.log(arr); // 打印出 ["1", "2", "3", "4", "5"] console.log(arr instanceof Array); // false console.log(arr.constructor === Array); // falseKami tidak dapat menentukan sama ada objek ialah tatasusunan dengan kaedah di atas; tetapi kami dapat melihat daripada ECMA262 bahawa kami boleh menggunakan kaedah
Object.prototype.toString.call() untuk menentukan sama ada objek ialah tatasusunan;
function isArray(obj) { return Object.prototype.toString.call(obj) == '[object Array]'; } // 代码调用 console.log(isArray([])); // true console.log(isArray([1,2,3])); // true var iframe = document.createElement('iframe'); document.body.appendChild(iframe); xArray = window.frames[window.frames.length-1].Array; var arr = new xArray("1","2","3","4","5"); console.log(arr); // ["1","2","3","4","5"] console.log(isArray(arr)); // true