


5 kaedah tatasusunan tatasusunan: indexOf, filter, forEach, peta, kurangkan penggunaan examples_javascript kemahiran
Standard ECMAScript5 telah dikeluarkan pada 3 Disember 2009. Ia membawa beberapa kaedah baharu untuk menambah baik operasi tatasusunan Array sedia ada. Walau bagaimanapun, kaedah tatasusunan model baru ini tidak pernah benar-benar ditangkap kerana terdapat kekurangan penyemak imbas berdaya ES5 di pasaran pada masa itu.
Susun "Tambahan"
Tiada siapa yang meragui kepraktisan kaedah ini, tetapi menulis poliisi (PS: pemalam yang serasi dengan penyemak imbas lama) tidak berbaloi untuk mereka. Ia bertukar "mesti dicapai" kepada "tercapai terbaik". Sesetengah orang sebenarnya memanggil kaedah tatasusunan ini "Tambahan". Kenapa!
Tetapi zaman berubah. Jika anda melihat projek JS sumber terbuka yang popular di Github, anda akan melihat bahawa keadaan sedang berubah. Semua orang mahu mengurangkan banyak kebergantungan (pustaka pihak ketiga) dan hanya menggunakan kod tempatan untuk mencapainya.
Baiklah, mari kita mulakan.
5 tatasusunan saya
Dalam ES5, terdapat sejumlah 9 kaedah Tatasusunan http://kangax.github.io/compat-table/es5/
Nota* Sembilan kaedah
Array.prototype.indexOf
Array.prototype.lastIndexOf
Array.prototype.every
Array.prototaip.beberapa
Array.prototype.forEach
Array.prototype.map
Array.prototype.filter
Array.prototype.reduce
Array.prototype.reduceRight
Saya akan memilih 5 kaedah yang saya fikir secara peribadi adalah yang paling berguna dan akan dihadapi oleh ramai pembangun.
1) indeksDari
Kaedah indexOf() mengembalikan kedudukan elemen pertama yang ditemui dalam tatasusunan, atau -1 jika ia tidak wujud.
Apabila tidak menggunakan indexOf
var arr = ['apple','orange','pear'], found = false; for(var i= 0, l = arr.length; i< l; i++){ if(arr[i] === 'orange'){ found = true; } } console.log("found:",found);
Selepas digunakan
var arr = ['apple','orange','pear']; console.log("found:", arr.indexOf("orange") != -1);
2) penapis
Kaedah penapis() mencipta tatasusunan baharu yang sepadan dengan keadaan penapis.
Apabila penapis() tidak digunakan
var arr = [ {"name":"apple", "count": 2}, {"name":"orange", "count": 5}, {"name":"pear", "count": 3}, {"name":"orange", "count": 16}, ]; var newArr = []; for(var i= 0, l = arr.length; i< l; i++){ if(arr[i].name === "orange" ){ newArr.push(arr[i]); } } console.log("Filter results:",newArr);
Penapis terpakai():
var arr = [ {"name":"apple", "count": 2}, {"name":"orange", "count": 5}, {"name":"pear", "count": 3}, {"name":"orange", "count": 16}, ]; var newArr = arr.filter(function(item){ return item.name === "orange"; }); console.log("Filter results:",newArr);
3) untukSetiap()
forEach melaksanakan kaedah yang sepadan untuk setiap elemen
var arr = [1,2,3,4,5,6,7,8]; // Uses the usual "for" loop to iterate for(var i= 0, l = arr.length; i< l; i++){ console.log(arr[i]); } console.log("========================"); //Uses forEach to iterate arr.forEach(function(item,index){ console.log(item); });
forEach digunakan untuk menggantikan gelung for
4) peta()
Selepas map() melakukan operasi tertentu (pemetaan) pada setiap elemen tatasusunan, ia akan mengembalikan tatasusunan baharu,
Jangan gunakan peta
var oldArr = [{first_name:"Colin",last_name:"Toh"},{first_name:"Addy",last_name:"Osmani"},{first_name:"Yehuda",last_name:"Katz"}]; function getNewArr(){ var newArr = []; for(var i= 0, l = oldArr.length; i< l; i++){ var item = oldArr[i]; item.full_name = [item.first_name,item.last_name].join(" "); newArr[i] = item; } return newArr; } console.log(getNewArr());
Selepas menggunakan peta
var oldArr = [{first_name:"Colin",last_name:"Toh"},{first_name:"Addy",last_name:"Osmani"},{first_name:"Yehuda",last_name:"Katz"}]; function getNewArr(){ return oldArr.map(function(item,index){ item.full_name = [item.first_name,item.last_name].join(" "); return item; }); } console.log(getNewArr());
map() ialah fungsi yang sangat praktikal apabila memproses data yang dikembalikan oleh pelayan.
5) kurangkan()
reduce() boleh melaksanakan fungsi penumpuk, mengurangkan setiap nilai tatasusunan (dari kiri ke kanan) kepada nilai.
Sejujurnya, pada mulanya agak sukar untuk memahami ayat ini kerana ia terlalu abstrak.
Senario: Kira berapa banyak perkataan unik yang terdapat dalam tatasusunan
Apabila pengurangan tidak digunakan
var arr = ["apple","orange","apple","orange","pear","orange"]; function getWordCnt(){ var obj = {}; for(var i= 0, l = arr.length; i< l; i++){ var item = arr[i]; obj[item] = (obj[item] +1 ) || 1; } return obj; } console.log(getWordCnt());
Selepas menggunakan reduce()
var arr = ["apple","orange","apple","orange","pear","orange"]; function getWordCnt(){ return arr.reduce(function(prev,next){ prev[next] = (prev[next] + 1) || 1; return prev; },{}); } console.log(getWordCnt());
Biar saya terangkan dahulu pemahaman saya tentang reduce. reduce(callback, initialValue) akan lulus dalam dua pembolehubah. Fungsi panggil balik (panggilan balik) dan nilai awal (initialValue). Andaikan bahawa fungsi mempunyai parameter masuk, sebelum dan seterusnya, indeks dan tatasusunan. Anda mesti faham sebelum dan seterusnya.
Secara umumnya, prev bermula dari elemen pertama dalam tatasusunan, dan seterusnya ialah elemen kedua. Tetapi apabila anda memasukkan nilai awal (initialValue), prev pertama akan menjadi initialValue, dan seterusnya akan menjadi elemen pertama dalam tatasusunan.
Contohnya:
/* * 二者的区别,在console中运行一下即可知晓 */ var arr = ["apple","orange"]; function noPassValue(){ return arr.reduce(function(prev,next){ console.log("prev:",prev); console.log("next:",next); return prev + " " +next; }); } function passValue(){ return arr.reduce(function(prev,next){ console.log("prev:",prev); console.log("next:",next); prev[next] = 1; return prev; },{}); } console.log("No Additional parameter:",noPassValue()); console.log("----------------"); console.log("With {} as an additional parameter:",passValue());

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



application.yml mentakrifkan koleksi senarai Cara pertama ialah menggunakan anotasi @ConfigurationProperties untuk mendapatkan semua nilai jenis koleksi senarai:kod:status:-200-300-400-500. Tulis kelas entiti yang sepadan fail konfigurasi. Apa yang perlu diperhatikan di sini ialah mentakrifkan Koleksi senarai, mula-mula tentukan kelas konfigurasi Bean, dan kemudian gunakan anotasi @ConfigurationProperties untuk mendapatkan nilai koleksi senarai Di sini kami akan menerangkan peranan anotasi yang berkaitan. @Component menyerahkan kelas entiti kepada pengurusan Spring @ConfigurationPropertie

1. Perbezaan antara Iterator dan foreach ialah perbezaan polimorfik (lapisan bawah foreach ialah Iterator ialah jenis antara muka, dan ia tidak mengambil berat tentang jenis pengumpulan atau tatasusunan untuk dan untuk setiap perlu mengetahui jenisnya). koleksi pertama, dan juga jenis elemen dalam koleksi 1. Mengapa dikatakan bahawa lapisan bawah foreach adalah kod yang ditulis oleh Iterator: Kod decompiled: 2. Perbezaan antara keluarkan dalam foreach dan iterator Pertama, lihat di Manual Pembangunan Java Alibaba, tetapi tiada ralat akan dilaporkan dalam kes 1, dan ralat akan dilaporkan dalam kes 2 (java. util.ConcurrentModificationException) terlebih dahulu

Langkah-langkah untuk PHP untuk menentukan bilangan gelung foreach: 1. Buat tatasusunan "$fruits"; 2. Buat pemboleh ubah pembilang "$counter" dengan nilai awal 0 melalui tatasusunan, dan Tingkatkan nilai pembolehubah pembilang dalam badan gelung, dan kemudian keluarkan setiap elemen dan indeksnya 4. Keluarkan nilai pembolehubah pembilang di luar gelung "foreach" untuk mengesahkan elemen yang dicapai gelung;

1. Latar belakang teknikal Dalam pembangunan projek sebenar, kami sering menggunakan perisian tengah caching (seperti redis, MemCache, dll.) untuk membantu kami meningkatkan ketersediaan dan keteguhan sistem. Tetapi dalam banyak kes, jika projek itu agak mudah, tidak perlu memperkenalkan perisian tengah secara khusus seperti Redis untuk meningkatkan kerumitan sistem untuk menggunakan caching. Jadi adakah Java sendiri mempunyai komponen caching ringan yang berguna? Jawapannya sudah tentu ya, dan terdapat lebih daripada satu cara. Penyelesaian biasa termasuk: ExpiringMap, LoadingCache dan pembungkusan berasaskan HashMap. 2. Kesan teknikal untuk merealisasikan fungsi biasa cache, seperti strategi pemadaman lapuk, pemanasan data hotspot 3. ExpiringMap3.

Terdapat banyak cara untuk menukar javabeans dan peta, seperti: 1. Tukar beans kepada json melalui ObjectMapper, dan kemudian menukar json kepada map Namun, kaedah ini adalah rumit dan tidak cekap, 10,000 beans telah ditukar dalam satu gelung. ia mengambil masa 12 saat! ! ! Tidak disyorkan. 2. Dapatkan atribut dan nilai kelas kacang melalui refleksi Java, dan kemudian tukarkannya kepada pasangan nilai kunci yang sepadan dengan peta Kaedah ini adalah yang kedua terbaik, tetapi ia lebih menyusahkan. 3. Melalui kaedah net.sf.cglib.beans.BeanMap di dalam kelas, kaedah ini sangat cekap Perbezaan antara kaedah ini dan kaedah kedua ialah kerana ia menggunakan cache, ia perlu dimulakan apabila mencipta bean untuk yang pertama. masa.

Kaedah 1. Gunakan HashtableMapashtable=newHashtable(); Ini adalah perkara pertama yang semua orang fikirkan, jadi mengapa ia selamat untuk thread? Kemudian lihat pada kod sumbernya. Kita dapat melihat bahawa kaedah yang biasa kita gunakan seperti put, get, dan containsKey semuanya adalah segerak, jadi ia adalah thread-safe publicsynchronizedbooleancontainsKey(Objectkey){Entrytab[]=table;inthash=key. hashCode( );intindex=(hash&0x7FFFFFFF)%tab.leng

Artikel ini akan menerangkan secara terperinci bagaimana PHP mengembalikan tatasusunan selepas membalikkan nilai utama Editor berpendapat ia agak praktikal, jadi saya berkongsi dengan anda sebagai rujukan saya harap anda boleh memperoleh sesuatu selepas membaca artikel ini. PHP key value flip Array key value flip ialah operasi pada tatasusunan yang menukar kunci dan nilai dalam tatasusunan untuk menjana tatasusunan baharu dengan kunci asal sebagai nilai dan nilai asal sebagai kunci. Kaedah pelaksanaan Dalam PHP, anda boleh melakukan pembalik nilai kunci tatasusunan melalui kaedah berikut: fungsi array_flip(): Fungsi array_flip() digunakan khas untuk operasi flip nilai kunci. Ia menerima tatasusunan sebagai hujah dan mengembalikan tatasusunan baharu dengan kunci dan nilai ditukar. $original_array=[

Mengoptimumkan prestasi peta bahasa Go Dalam bahasa Go, peta ialah struktur data yang sangat biasa digunakan, digunakan untuk menyimpan koleksi pasangan nilai kunci. Walau bagaimanapun, prestasi peta mungkin terjejas apabila memproses sejumlah besar data. Untuk meningkatkan prestasi peta, kami boleh mengambil beberapa langkah pengoptimuman untuk mengurangkan kerumitan masa operasi peta, dengan itu meningkatkan kecekapan pelaksanaan program. 1. Pra-peruntukkan kapasiti peta Apabila membuat peta, kita boleh mengurangkan bilangan pengembangan peta dan meningkatkan prestasi program dengan pra-peruntukan kapasiti. Secara umumnya, kami
