Rumah hujung hadapan web tutorial js Penjelasan terperinci tentang Array.prototype.map() dalam pengetahuan Javascript_Basic

Penjelasan terperinci tentang Array.prototype.map() dalam pengetahuan Javascript_Basic

May 16, 2016 pm 04:33 PM
javascript

Dalam pembangunan harian kami, mengendalikan dan menukar tatasusunan ialah operasi yang sangat biasa

Salin kod Kod adalah seperti berikut:
var desColors = [],
srcColors = [
{r: 255, g: 255, b: 255}, // Putih
{r: 128, g: 128, b: 128}, // Kelabu
{r: 0, g: 0, b: 0} // Hitam
];
untuk (var i = 0, ilen = srcColors.length; i < ilen; i ) {

var color = srcColors[i],
format = fungsi(warna) {
               kembalikan Math.round(warna / 2);
        };

desColors.push( {

r: format(warna.r),
g: format(warna.g),
           b: format(warna.b)
});
}

// Output:

// [
// {r: 128, g: 128, b: 128},
// {r: 64, g: 64, b: 64 },
// {r: 0, g: 0, b: 0 }
// ];
console.log(desColors);


Seperti yang dapat dilihat daripada contoh di atas, kadar pengulangan semua operasi adalah agak tinggi Bagaimana untuk mengoptimumkannya, Ecmascript 5 menyediakan kami kaedah peta, yang boleh kami gunakan untuk mengoptimumkan contoh di atas:

var srcColors = [
{r: 255, g: 255, b: 255}, // Putih
{r: 128, g: 128, b: 128}, // Kelabu
{r: 0, g: 0, b: 0} // Hitam
],
DesColors = srcColors.map(function(val) {
         format var = fungsi(warna) {
               kembalikan Math.round(warna/2);
        };
         kembali {
             r: format(val.r),
g: format(val.g),
                b: format(val.b)
}
});
// Output:
// [
// {r: 128, g: 128, b: 128},
// {r: 64, g: 64, b: 64 },
// {r: 0, g: 0, b: 0 }
// ];
console.log(desColors);

Seperti yang dapat dilihat daripada contoh di atas, kami menggunakan peta untuk menggantikan bahagian gelung for, jadi kami hanya perlu mengambil berat tentang logik pelaksanaan setiap elemen itu sendiri. Untuk butiran mengenai kaedah peta, sila klik di sini.

1. definisi asas peta:
array.map(panggilan balik[, thisArg]);

Kaedah peta akan memanggil fungsi panggil balik sekali untuk setiap elemen dalam tatasusunan asal dalam urutan. Nilai pulangan selepas setiap pelaksanaan panggilan balik digabungkan untuk membentuk tatasusunan baharu. Fungsi panggil balik hanya akan dipanggil pada indeks yang mempunyai nilai indeks yang tidak pernah diberikan nilai atau dipadam menggunakan padam tidak akan dipanggil.

Fungsi panggil balik secara automatik akan dihantar dalam tiga parameter: elemen tatasusunan, indeks elemen dan tatasusunan asal itu sendiri.

Jika parameter thisArg mempunyai nilai, setiap kali fungsi panggil balik dipanggil, ini akan menunjuk ke objek pada parameter thisArg. Jika parameter thisArg diabaikan, atau diberikan nilai null atau undefined, ini menunjuk ke objek global.

peta tidak mengubah suai tatasusunan asal itu sendiri (sudah tentu tatasusunan asal boleh ditukar apabila panggilan balik dilaksanakan).

Apabila kaedah peta dijalankan pada tatasusunan, panjang tatasusunan ditentukan sebelum kaedah panggil balik pertama dipanggil. Semasa keseluruhan proses menjalankan kaedah peta, tidak kira sama ada operasi dalam fungsi panggil balik menambah atau memadam elemen pada tatasusunan asal. Kaedah peta tidak akan mengetahui bahawa jika elemen tatasusunan meningkat, elemen yang baru ditambah tidak akan dilalui oleh peta Jika elemen tatasusunan berkurangan, kaedah peta juga akan berfikir bahawa panjang tatasusunan asal tidak berubah, mengakibatkan akses tatasusunan di luar sempadan. Jika elemen dalam tatasusunan diubah atau dipadamkan, nilainya yang dihantar ke panggilan balik adalah nilai pada saat itu apabila kaedah peta melintasinya.

2.contoh peta:

Salin kod Kod adalah seperti berikut:

//Contoh 1: Memanggil kaedah peta pada rentetan
var result = Array.prototype.map.call("Hello world", function(x, index, arr) {
//String {0: "H", 1: "e", 2: "l", 3: "l", 4: "o", 5: " ", 6: "w", 7: "o" , 8: "r", 9: "l", 10: "d", panjang: 11}
console.log(arr);
Kembalikan x.charCodeAt(0);
});
//Output: [72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
console.log(hasil);

Contoh di atas menunjukkan menggunakan kaedah peta pada String untuk mendapatkan tatasusunan yang terdiri daripada kod ASCII yang sepadan dengan setiap aksara dalam rentetan. Sila beri perhatian kepada keputusan yang dicetak oleh console.log(arr).

Salin kod Kod adalah seperti berikut:

//Contoh 2: Apakah hasil daripada operasi berikut?
var result = ["1", "2", "3"].map(parseInt);
//Output: [1, NaN, NaN]
console.log(hasil);

Mungkin anda mempunyai soalan, mengapa tidak [1,2,3]? Kami tahu bahawa kaedah parseInt boleh menerima dua parameter Parameter pertama ialah nilai yang perlu ditukar, dan parameter kedua ialah nombor asas Jika anda tidak faham, anda boleh klik di sini. Apabila kami menggunakan kaedah peta, fungsi panggil balik menerima tiga parameter, manakala parseInt hanya boleh menerima paling banyak dua parameter, supaya parameter ketiga dibuang terus Pada masa yang sama, parseInt menganggap nilai indeks yang diluluskan sebagai nombor asas gunakan. Dengan itu mengembalikan NaN. Lihat output di bawah:

Salin kod Kod adalah seperti berikut:

//Keluaran: 1
console.log(parseInt("1", 0));
//Keluaran: 1
console.log(parseInt("1", undefined));
//Pengeluaran: NaN
console.log(parseInt("2", 1));
//Pengeluaran: NaN
console.log(parseInt("3", 2));

Dua yang terakhir mudah difahami, tetapi mengapa dua yang pertama mengembalikan 1? Untuk menerangkan masalah ini, mari kita lihat penerangan rasmi:
Jika radix tidak ditakrifkan atau 0 (atau tiada), JavaScript menganggap perkara berikut:
a) Jika rentetan input bermula dengan “0x” atau “0X”, radix ialah 16 (heksadesimal) dan baki rentetan dihuraikan.
b) Jika rentetan input bermula dengan "0", radix ialah lapan (oktal) atau 10 (perpuluhan yang dipilih adalah bergantung kepada pelaksanaan ECMAScript 5 menentukan bahawa 10 (perpuluhan) digunakan, tetapi tidak semua penyemak imbas menyokong ini lagi. Atas sebab ini, sentiasa nyatakan radix apabila menggunakan parseInt.
c) Jika rentetan input bermula dengan sebarang nilai lain, radix ialah 10 (perpuluhan).
Dalam titik ketiga, apabila rentetan adalah nilai lain, asas lalai kepada 10.

Jadi bagaimana kita boleh mengubah suainya untuk menjadikan contoh di atas keluaran secara normal? Lihat contoh berikut:

Salin kod Kod adalah seperti berikut:

var result = ["1", "2", "3"].map(function(val) {
Kembalikan parseInt(val, 10);
});
//Output: [1, 2, 3]
console.log(hasil);

3.Keserasian kaedah peta:
Kaedah peta tidak disokong dalam pelayar IE8 dan ke bawah Untuk serasi dengan versi pelayar yang lebih lama, anda boleh:

a) Jangan gunakan <font face="NSimsun">map</font>.b) Gunakan sesuatu seperti es5-shim untuk membuat sokongan IE yang lebih lama <font face="NSimsun">map</font>.c) Gunakan kaedah <font face="NSimsun">_.map</font> dalam Underscore atau Lodash untuk fungsi utiliti yang setara.

Di atas adalah pemahaman saya tentang kaedah peta. Saya harap ia dapat membantu pemula.

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat 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 melaksanakan sistem pengecaman pertuturan dalam talian menggunakan WebSocket dan JavaScript Bagaimana untuk melaksanakan sistem pengecaman pertuturan dalam talian menggunakan WebSocket dan JavaScript Dec 17, 2023 pm 02:54 PM

Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian Pengenalan: Dengan perkembangan teknologi yang berterusan, teknologi pengecaman pertuturan telah menjadi bahagian penting dalam bidang kecerdasan buatan. Sistem pengecaman pertuturan dalam talian berdasarkan WebSocket dan JavaScript mempunyai ciri kependaman rendah, masa nyata dan platform merentas, dan telah menjadi penyelesaian yang digunakan secara meluas. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian.

WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata Dec 17, 2023 pm 05:30 PM

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan sistem pemantauan masa nyata Pengenalan: Dengan perkembangan pesat teknologi Internet, sistem pemantauan masa nyata telah digunakan secara meluas dalam pelbagai bidang. Salah satu teknologi utama untuk mencapai pemantauan masa nyata ialah gabungan WebSocket dan JavaScript. Artikel ini akan memperkenalkan aplikasi WebSocket dan JavaScript dalam sistem pemantauan masa nyata, memberikan contoh kod dan menerangkan prinsip pelaksanaannya secara terperinci. 1. Teknologi WebSocket

Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript Dec 17, 2023 am 09:39 AM

Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian Dalam era digital hari ini, semakin banyak perniagaan dan perkhidmatan perlu menyediakan fungsi tempahan dalam talian. Adalah penting untuk melaksanakan sistem tempahan dalam talian yang cekap dan masa nyata. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian dan memberikan contoh kod khusus. 1. Apakah itu WebSocket? WebSocket ialah kaedah dupleks penuh pada sambungan TCP tunggal.

Cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata Cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata Dec 17, 2023 pm 12:09 PM

Pengenalan kepada cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata: Dengan populariti Internet dan kemajuan teknologi, semakin banyak restoran telah mula menyediakan perkhidmatan pesanan dalam talian. Untuk melaksanakan sistem pesanan dalam talian masa nyata, kami boleh menggunakan teknologi JavaScript dan WebSocket. WebSocket ialah protokol komunikasi dupleks penuh berdasarkan protokol TCP, yang boleh merealisasikan komunikasi dua hala masa nyata antara pelanggan dan pelayan. Dalam sistem pesanan dalam talian masa nyata, apabila pengguna memilih hidangan dan membuat pesanan

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Dec 17, 2023 pm 05:13 PM

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Pengenalan: Hari ini, ketepatan ramalan cuaca sangat penting kepada kehidupan harian dan membuat keputusan. Apabila teknologi berkembang, kami boleh menyediakan ramalan cuaca yang lebih tepat dan boleh dipercayai dengan mendapatkan data cuaca dalam masa nyata. Dalam artikel ini, kita akan mempelajari cara menggunakan teknologi JavaScript dan WebSocket untuk membina sistem ramalan cuaca masa nyata yang cekap. Artikel ini akan menunjukkan proses pelaksanaan melalui contoh kod tertentu. Kami

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Bagaimana untuk menggunakan insertBefore dalam javascript Bagaimana untuk menggunakan insertBefore dalam javascript Nov 24, 2023 am 11:56 AM

Penggunaan: Dalam JavaScript, kaedah insertBefore() digunakan untuk memasukkan nod baharu dalam pepohon DOM. Kaedah ini memerlukan dua parameter: nod baharu untuk dimasukkan dan nod rujukan (iaitu nod di mana nod baharu akan dimasukkan).

Bagaimana untuk mendapatkan kod status HTTP dalam JavaScript dengan cara yang mudah Bagaimana untuk mendapatkan kod status HTTP dalam JavaScript dengan cara yang mudah Jan 05, 2024 pm 01:37 PM

Pengenalan kepada kaedah mendapatkan kod status HTTP dalam JavaScript: Dalam pembangunan bahagian hadapan, kita selalunya perlu berurusan dengan interaksi dengan antara muka bahagian belakang, dan kod status HTTP adalah bahagian yang sangat penting daripadanya. Memahami dan mendapatkan kod status HTTP membantu kami mengendalikan data yang dikembalikan oleh antara muka dengan lebih baik. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan memberikan contoh kod khusus. 1. Apakah kod status HTTP bermakna kod status HTTP apabila penyemak imbas memulakan permintaan kepada pelayan, perkhidmatan tersebut

See all articles