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

Apakah tatasusunan pseudo dalam javascript

青灯夜游
青灯夜游asal
2021-10-19 16:47:152778semak imbas

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

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

Cara menukar tatasusunan pseudo kepada tatasusunan sebenar

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

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]);
    }

2. Gunakan kaedah slice() tatasusunan [Disyorkan]

atau
    ;[].slice.call(arrLike);

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

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;
    }
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;

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

[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!

Kenyataan:
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