Rumah hujung hadapan web tutorial js 5 kaedah tatasusunan tatasusunan: indexOf, filter, forEach, peta, kurangkan penggunaan examples_javascript kemahiran

5 kaedah tatasusunan tatasusunan: indexOf, filter, forEach, peta, kurangkan penggunaan examples_javascript kemahiran

May 16, 2016 pm 04:17 PM
filter foreach indexof map reduce

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

Salin selepas log masuk

Selepas digunakan

var arr = ['apple','orange','pear'];

console.log("found:", arr.indexOf("orange") != -1);

Salin selepas log masuk

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

Salin selepas log masuk


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

Salin selepas log masuk

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

Salin selepas log masuk

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

Salin selepas log masuk

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

Salin selepas log masuk


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

Salin selepas log masuk

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

Salin selepas log masuk

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

Salin selepas log masuk

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

Video Face Swap

Video Face Swap

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

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)

Bagaimanakah springboot membaca senarai, tatasusunan, koleksi peta dan objek dalam fail yml? Bagaimanakah springboot membaca senarai, tatasusunan, koleksi peta dan objek dalam fail yml? May 11, 2023 am 10:46 AM

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

Apakah perbezaan antara menggunakan foreach dan iterator untuk memadam elemen semasa melintasi Java ArrayList? Apakah perbezaan antara menggunakan foreach dan iterator untuk memadam elemen semasa melintasi Java ArrayList? Apr 27, 2023 pm 03:40 PM

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

Bagaimana untuk menentukan bilangan gelung foreach dalam php Bagaimana untuk menentukan bilangan gelung foreach dalam php Jul 10, 2023 pm 02:18 PM

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;

Bagaimana untuk menetapkan peta masa tamat tempoh di Jawa Bagaimana untuk menetapkan peta masa tamat tempoh di Jawa May 04, 2023 am 10:13 AM

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.

Cara menukar objek kepada Peta dalam Java - menggunakan BeanMap Cara menukar objek kepada Peta dalam Java - menggunakan BeanMap May 08, 2023 pm 03:49 PM

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.

Apakah cara untuk melaksanakan keselamatan benang untuk Peta di Jawa? Apakah cara untuk melaksanakan keselamatan benang untuk Peta di Jawa? Apr 19, 2023 pm 07:52 PM

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

PHP mengembalikan tatasusunan dengan nilai kunci dibalikkan PHP mengembalikan tatasusunan dengan nilai kunci dibalikkan Mar 21, 2024 pm 02:10 PM

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

Optimumkan prestasi peta bahasa Go Optimumkan prestasi peta bahasa Go Mar 23, 2024 pm 12:06 PM

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

See all articles