Rumah > Artikel > hujung hadapan web > Apakah fungsi penapis dalam es6
Dalam es6, penapis penapis menapis elemen tatasusunan dan mengembalikan tatasusunan baharu. Fungsi penapis() mencipta tatasusunan baharu yang mengandungi semua elemen ujian yang dilaksanakan melalui fungsi panggil balik yang disediakan, sintaks "arr.filter(panggilan balik(elemen[, indeks[, tatasusunan]])[, thisArg])"; tiada elemen tatasusunan lulus ujian, tatasusunan kosong dikembalikan.
Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6, komputer Dell G3.
tapis dalam ES6
Fungsi penapis biasanya dikenali sebagai penapis Fungsi: Menapis elemen tatasusunan dan mengembalikan tatasusunan baharu ;
Kaedah penapis() mencipta tatasusunan baharu yang mengandungi semua elemen ujian yang dilaksanakan oleh fungsi yang disediakan.
var sexData=["男","女","女","男","女"]; var filter2=sexData.filter(function(sex){ return sex==="女" }) //console.log(filter2) ["女", "女", "女"]
var porducts = [ {name: 'apple',type: 'red'} , {name: 'orange',type: 'orange'}, {name: 'banana',type: 'yellow'}, {name: 'mango',type: 'yellow'} ]; var filter2=porducts.filter(function(item){ return item.type==='yellow' }) //console.log(filter2) //0: {name: "banana", type: "yellow"}1: {name: "mango", type: "yellow"}
Sintaks
var newArray = arr.filter( callback(element[, index[, array]])[, thisArg] )
Parameter
panggilan balik: fungsi panggil balik
elemen: data sedang diproses dalam tatasusunan arr
indeks: subskrip elemen, tatasusunan
pilihan : tatasusunan itu sendiri yang memanggil penapis, pilihan
thisArg: nilai yang digunakan untuk ini semasa melaksanakan panggilan balik, pilihan
kembalikan Nilai
Tatasusunan baharu yang terdiri daripada elemen yang lulus ujian, atau tatasusunan kosong jika tiada elemen tatasusunan lulus ujian.
Penerangan
penapis memanggil fungsi panggil balik sekali untuk setiap elemen dalam tatasusunan dan menggunakan semua elemen untuk menjadikan panggilan balik kembali benar atau setara to true Mencipta tatasusunan baharu dengan unsur nilai. panggil balik hanya akan dipanggil pada indeks yang telah diberikan nilai, dan tidak akan dipanggil pada indeks yang telah dipadamkan atau tidak pernah diberikan nilai. Elemen yang gagal dalam ujian panggil balik akan dilangkau dan tidak akan disertakan dalam tatasusunan baharu.
Apabila panggil balik dipanggil, tiga parameter dihantar masuk: nilai elemen, indeks elemen dan tatasusunan itu sendiri sedang dilalui
Jika parameter thisArg disediakan untuk penapis, ia akan menjadi Sebagai nilai ini apabila panggilan balik dipanggil. Jika tidak, nilai panggilan balik ini akan menjadi objek global dalam mod tidak ketat dan tidak ditentukan dalam mod ketat. Nilai ini akhirnya diperhatikan oleh fungsi panggil balik ditentukan mengikut peraturan "ini" yang dilihat oleh fungsi normal.
penapis tidak mengubah tatasusunan asal, ia mengembalikan tatasusunan ditapis baharu.
Julat elemen yang dilalui oleh penapis telah ditentukan sebelum panggilan balik dipanggil buat kali pertama. Elemen yang ditambahkan pada tatasusunan selepas penapis dipanggil tidak akan dilalui oleh penapis. Jika elemen sedia ada telah diubah, nilai yang mereka hantar ke panggilan balik adalah nilai pada masa penapis melintasinya. Elemen yang dipadamkan atau tidak pernah diberikan nilai tidak akan dilalui.
Penggunaan khas:
1. Keluarkan rentetan kosong, tidak ditentukan, batal
array.filter((value, index, arr) => {value})
2. Keluarkan tatasusunan Ulang
array.filter((value, index, arr) => {arr.indexOf(value) === index})
Contoh
1 Tapis entri yang tidak sah dalam JSON
Contoh berikut menggunakan penapis() untuk mencipta elemen dengan id bukan sifar json.
var arr = [ { id: 15 }, { id: -1 }, { id: 0 }, { id: 3 }, { id: 12.2 }, { }, { id: null }, { id: NaN }, { id: 'undefined' }];var invalidEntries = 0;function isNumber(obj) { return obj !== undefined && typeof(obj) === 'number' && !isNaN(obj);}function filterByID(item) { if (isNumber(item.id) && item.id !== 0) { return true; } invalidEntries++; return false; }var arrByID = arr.filter(filterByID);console.log('Filtered Array\n', arrByID); // Filtered Array// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]console.log('Number of Invalid Entries = ', invalidEntries); // Number of Invalid Entries = 5
2. Alih keluar rentetan kosong, tidak ditentukan, batal
//2. 去掉空字符串、undefined、null var porducts = [ {name:''}, {name:"哈哈"} ]; var filter2=porducts.filter(function(item){ return item.name }) //console.log(filter2) //打印得出 0: {name: "哈哈"}
3 Alih keluar pendua daripada tatasusunan
//3. 数组去重 array.filter((value, index, arr) => {arr.indexOf(value) === index}) var porducts = ['苹果','香蕉','苹果','芒果'] var filter2=porducts.filter(function(item,index,porducts){ return porducts.indexOf(item)==index }) //console.log(filter2) // ["苹果", "香蕉", "芒果"]
[Pembelajaran yang disyorkan: <.>Tutorial lanjutan JavaScript】
Atas ialah kandungan terperinci Apakah fungsi penapis dalam es6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!