cari
Rumahhujung hadapan webtutorial jsPenjelasan terperinci tentang Array.prototype.map() dalam pengetahuan Javascript_Basic

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 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
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
Memahami Enjin JavaScript: Butiran PelaksanaanMemahami Enjin JavaScript: Butiran PelaksanaanApr 17, 2025 am 12:05 AM

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python vs JavaScript: Keluk Pembelajaran dan Kemudahan PenggunaanPython vs JavaScript: Keluk Pembelajaran dan Kemudahan PenggunaanApr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Python vs JavaScript: Komuniti, Perpustakaan, dan SumberPython vs JavaScript: Komuniti, Perpustakaan, dan SumberApr 15, 2025 am 12:16 AM

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Dari C/C ke JavaScript: Bagaimana semuanya berfungsiDari C/C ke JavaScript: Bagaimana semuanya berfungsiApr 14, 2025 am 12:05 AM

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Enjin JavaScript: Membandingkan PelaksanaanEnjin JavaScript: Membandingkan PelaksanaanApr 13, 2025 am 12:05 AM

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Beyond the Browser: JavaScript di dunia nyataBeyond the Browser: JavaScript di dunia nyataApr 12, 2025 am 12:06 AM

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Apr 11, 2025 am 08:23 AM

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Apr 11, 2025 am 08:22 AM

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

See all articles

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)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft