Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Apakah tatasusunan pseudo dalam javascript

Apakah tatasusunan pseudo dalam javascript

青灯夜游
Lepaskan: 2021-10-19 16:47:15
asal
2780 orang telah melayarinya

Dalam JavaScript, tatasusunan pseudo, juga dikenali sebagai objek seperti tatasusunan, ialah objek seperti tatasusunan yang menyimpan data mengikut indeks dan mempunyai atribut panjang kerana ia adalah objek, pseudo -array tidak mempunyai tolakan array (), forEach() dan kaedah lain.

Apakah tatasusunan pseudo dalam javascript

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.

Takrifan dan ciri tatasusunan pseudo

Susun atur (ArrayLike), juga dikenali sebagai seperti tatasusunan. Merupakan objek seperti tatasusunan yang menyimpan data mengikut indeks dan mempunyai sifat panjang. Tetapi ia mempunyai ciri-ciri berikut.

  • Simpan data mengikut indeks

    0: xxx, 1: xxx, 2: xxx...

  • mempunyai atribut length

    tetapi lengthAtribut tidak dinamik dan tidak akan berubah apabila ahli berubah

  • Kaedah seperti push() dan forEach() yang tidak mempunyai tatasusunan

    arrayLike.__proto__ === Object.prototype;   //true 
    arrayLike instanceof Object; //true 
    arrayLike instanceof Array; //false
    Salin selepas log masuk

Susun semu tipikal yang biasa termasuk set elemen DOM yang diperoleh melalui $() dalam jQuery, objek argumen dalam fungsi dan objek String.

Contoh:

    var arrLike = {
        0: 'a',
        1: 'b',
        2: 'c',
        length: 3,
    }
    arrLike[1]; //'a'
    arrLike.length; //3
    arrLike.push('d'); //Uncaught TypeError: arrLike.push is not a function
Salin selepas log masuk

Cara menukar tatasusunan pseudo kepada tatasusunan sebenar

    var arrLike = {
        0: 'a',
        1: 'b',
        2: 'c',
        length: 3,
    };
Salin selepas log masuk

1 >

Ia agak ringkas dan mudah difahami, tetapi langkahnya agak rumit.
    var arr = [];
    for(var i = 0; i < arrLike.length; i++){
        arr.push(arrLike[i]);
    }
Salin selepas log masuk

2. Gunakan kaedah slice() tatasusunan [Disyorkan]

atau
    ;[].slice.call(arrLike);
Salin selepas log masuk

Gunakan slice() untuk kembalikan yang baru Untuk tatasusunan, gunakan call() atau apply() untuk menghalakan persekitarannya kepada tatasusunan pseudo.
    Array.prototype.slice.apply(arrLike);
Salin selepas log masuk

Perhatikan bahawa tiada atribut tambahan selain daripada nilai indeks akan dikekalkan dalam tatasusunan yang dikembalikan.

Sebagai contoh, dalam tatasusunan pseudo DOM yang diperolehi oleh $() dalam jQuery, atribut konteks di dalamnya tidak akan dikekalkan selepas ditukar oleh kaedah ini.

Simulasikan pelaksanaan dalaman slice()

    Array.prtotype.slice = function(start, end){
        var result = new Array();
        var start = start | 0;
        var end = end | this.length;
        for(var i = start; i < end; i++){
            result.push(this[i]);
        }
        return result;
    }
Salin selepas log masuk
3. Ubah suai penunjuk prototaip

supaya arrLike mewarisi Array. Untuk kaedah dalam prototaip, anda boleh menggunakan push(), unshift() dan kaedah lain, dan nilai panjang juga akan berubah secara dinamik.
    arrLike.__proto__ = Array.prototype;
Salin selepas log masuk

Selain itu, kaedah mengubah suai rantai prototaip secara langsung ini juga akan mengekalkan semua atribut dalam tatasusunan pseudo, termasuk atribut yang bukan nilai indeks.

4. Kaedah Array.from() dalam ES2015

Kaedah Array.from() mencipta tika tatasusunan baharu daripada objek seperti tatasusunan atau boleh lelar.

Hasil yang diperoleh adalah serupa dengan kaedah kedua, hanya atribut dalam nilai indeks yang dikekalkan.
    var arr = Array.from(arrLike);
Salin selepas log masuk

[Pembelajaran yang disyorkan:

Tutorial JavaScript Lanjutan

]

Atas ialah kandungan terperinci Apakah tatasusunan pseudo dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan