Rumah hujung hadapan web tutorial js JavaScript menentukan sama ada objek ialah petua array_javascript

JavaScript menentukan sama ada objek ialah petua array_javascript

May 16, 2016 pm 03:24 PM
javascript objek tatasusunan

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); // undefined
Salin selepas log masuk
Tetapi 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
Salin selepas log masuk
2. Contoh

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); // false
Salin selepas log masuk
Seperti 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));// false

Salin selepas log masuk
Seperti yang anda lihat di atas, anda juga boleh menentukan sama ada ia adalah elemen tatasusunan dengan memanggil kaedah isArray.
Kita kini dapat melihat bahawa untuk mata kedua dan ketiga, nampaknya menggunakan kaedah instanceof dan atribut pembina masing-masing boleh menentukan sama ada ia adalah tatasusunan, tetapi terdapat juga pengecualian, seperti apabila menggunakan tatasusunan dalam halaman apabila menggunakan salib -frame iframe. , akan gagal kerana tatasusunan yang dibuat dalam iframe yang berbeza tidak akan berkongsi atribut prototaip antara satu sama lain ujian kod berikut boleh disahkan~



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); // false

Salin selepas log masuk
Kami 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;

Di atas ialah keseluruhan kandungan artikel ini untuk membantu anda mengetahui cara menentukan sama ada sesuatu objek ialah tatasusunan dalam JavaScript, saya harap ia akan membantu pembelajaran anda.
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
Salin selepas log masuk
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mengalih keluar elemen pendua dari tatasusunan PHP menggunakan gelung foreach? Bagaimana untuk mengalih keluar elemen pendua dari tatasusunan PHP menggunakan gelung foreach? Apr 27, 2024 am 11:33 AM

Bagaimana untuk mengalih keluar elemen pendua dari tatasusunan PHP menggunakan gelung foreach?

Bagaimana untuk menukar tatasusunan hasil pertanyaan MySQL kepada objek? Bagaimana untuk menukar tatasusunan hasil pertanyaan MySQL kepada objek? Apr 29, 2024 pm 01:09 PM

Bagaimana untuk menukar tatasusunan hasil pertanyaan MySQL kepada objek?

Pembalikan nilai kunci tatasusunan PHP: analisis perbandingan prestasi kaedah yang berbeza Pembalikan nilai kunci tatasusunan PHP: analisis perbandingan prestasi kaedah yang berbeza May 03, 2024 pm 09:03 PM

Pembalikan nilai kunci tatasusunan PHP: analisis perbandingan prestasi kaedah yang berbeza

Amalan pengisihan pelbagai dimensi tatasusunan PHP: daripada senario mudah kepada kompleks Amalan pengisihan pelbagai dimensi tatasusunan PHP: daripada senario mudah kepada kompleks Apr 29, 2024 pm 09:12 PM

Amalan pengisihan pelbagai dimensi tatasusunan PHP: daripada senario mudah kepada kompleks

Seni PHP Array Deep Copy: Menggunakan Kaedah Berbeza untuk Mencapai Salinan Sempurna Seni PHP Array Deep Copy: Menggunakan Kaedah Berbeza untuk Mencapai Salinan Sempurna May 01, 2024 pm 12:30 PM

Seni PHP Array Deep Copy: Menggunakan Kaedah Berbeza untuk Mencapai Salinan Sempurna

Apakah perbezaan antara tatasusunan dan objek dalam PHP? Apakah perbezaan antara tatasusunan dan objek dalam PHP? Apr 29, 2024 pm 02:39 PM

Apakah perbezaan antara tatasusunan dan objek dalam PHP?

Amalan Terbaik untuk Menyalin Dalam Tatasusunan PHP: Temui Kaedah Cekap Amalan Terbaik untuk Menyalin Dalam Tatasusunan PHP: Temui Kaedah Cekap Apr 30, 2024 pm 03:42 PM

Amalan Terbaik untuk Menyalin Dalam Tatasusunan PHP: Temui Kaedah Cekap

Aplikasi fungsi pengelompokan tatasusunan PHP dalam pengisihan data Aplikasi fungsi pengelompokan tatasusunan PHP dalam pengisihan data May 04, 2024 pm 01:03 PM

Aplikasi fungsi pengelompokan tatasusunan PHP dalam pengisihan data

See all articles