Rumah >hujung hadapan web >tutorial js >Contoh terperinci kaedah Tatasusunan baharu dalam kemahiran ECMAScript5_javascript

Contoh terperinci kaedah Tatasusunan baharu dalam kemahiran ECMAScript5_javascript

WBOY
WBOYasal
2016-05-16 15:06:311501semak imbas

ECMAScript5 menyediakan satu siri antara muka API yang baharu. Kebanyakan antara muka ini disokong dalam pelayar baharu IE9, dan FirFor semua menyokongnya. Terdapat juga beberapa API yang tidak disokong oleh semua penyemak imbas hanya Memperkenalkan kebanyakan API yang disokong. Menggunakan API baharu kami boleh mereka bentuk kelas yang sangat boleh dipercayai sambil mengekalkan gaya JavaScript asal.

Standard ECMAScript5 telah dikeluarkan pada 3 Disember 2009. Ia membawa beberapa kaedah baharu untuk menambah baik operasi tatasusunan Array sedia ada. (nota keserasian)

Dalam ES5, terdapat sejumlah 9 kaedah Tatasusunan: http://kangax.github.io/compat-table/es5/

Array.prototype.indexOf
Array.prototype.lastIndexOf
Array.prototype.every
Array.prototype.some
Array.prototype.forEach
Array.prototype.map
Array.prototype.filter
Array.prototype.reduce
Array.prototype.reduceRight 

7 daripada kaedah disenaraikan di bawah 5 kaedah pertama adalah sangat biasa dan digunakan oleh banyak pembangun:

1. indexOf()

Kaedah indexOf() mengembalikan kedudukan elemen pertama yang ditemui dalam tatasusunan, atau -1 jika ia tidak wujud.

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); // ==> found: true
// 使用后
console.log("found:", arr.indexOf("orange") != -1); // ==> found: true 

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; i < arr.length; i++) {
if (arr[i].name === "orange") {
newArr.push(arr[i]);
}
}
console.log("Filter results:", newArr); 

penapis terpakai():

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 dan digunakan untuk menggantikan gelung for.

var arr = [1, 2, 3, 4, 5, 6, 7, 8];
// 使用for循环
for (var i = 0, l = arr.length; i < l; i++) {
console.log(arr[i]);
}
// 使用forEach循环
arr.forEach(function(item, index) {
console.log(item);
}); 

4. map()

Selepas map() melakukan operasi tertentu (pemetaan) pada setiap elemen tatasusunan, ia akan mengembalikan tatasusunan baharu.

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; i < oldArr.length; i++) {
var item = oldArr[i];
item.full_name = [item.first_name, item.last_name].join(" ");
newArr[i] = item;
}
return newArr;
}
var personName = getNewArr();
personName.forEach(function(item, index) {
console.log(item);
})
/****输出结果:
Object {first_name: "Colin", last_name: "Toh", full_name: "Colin Toh"}
Object {first_name: "Addy", last_name: "Osmani", full_name: "Addy Osmani"}
Object {first_name: "Yehuda", last_name: "Katz", full_name: "Yehuda Katz"}
****/ 

Gunakan kaedah map():

function getNewArr() {
return oldArr.map(function(item, index) {
item.full_name = [item.first_name, item.last_name].join(" ");
return item;
})
}
var personName = getNewArr();
personName.forEach(function(item, index) {
console.log(item);
})
/****输出结果:
Object {first_name: "Colin", last_name: "Toh", full_name: "Colin Toh"}
Object {first_name: "Addy", last_name: "Osmani", full_name: "Addy Osmani"}
Object {first_name: "Yehuda", last_name: "Katz", full_name: "Yehuda Katz"}
****/ 

5. kurangkan()

reduce() boleh melaksanakan fungsi penumpuk, mengurangkan setiap nilai tatasusunan (dari kiri ke kanan) kepada nilai. Ia juga boleh difahami sebagai: biarkan item sebelumnya dan seterusnya dalam tatasusunan melakukan beberapa jenis operasi dan mengumpul nilai akhir

Senario: Kira berapa banyak perkataan unik yang terdapat dalam tatasusunan

var arr = ["apple", "orange", "apple", "orange", "pear", "orange"];
function getWordCnt() {
var obj = {};
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
obj[item] = (obj[item] + 1) || 1;
}
return obj;
}
console.log(getWordCnt());
// 输出结果:
// Object {apple: 2, orange: 3, pear: 1} 

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());
// 输出结果:
// Object {apple: 2, orange: 3, pear: 1} 

6, array.some(panggilan balik[, thisObject]); panggilan balik: fungsi yang digunakan untuk menguji elemen tertentu.

thisObject: Objek digunakan sebagai panggilan balik pelaksanaan.

Kesan sama ada item tertentu dalam tatasusunan memenuhi syarat

var scores = [45, 60, 70, 65, 95, 85];
var current = 60;
function passed(score) {
return score > current;
}
console.log(scores.some(passed)); // == > true 

7. array.every(panggilan balik[, thisObject]); panggilan balik : fungsi digunakan untuk menguji setiap elemen. thisObject: Objek digunakan sebagai panggilan balik pelaksanaan.

Semak sama ada setiap item dalam tatasusunan memenuhi syarat;

var scores = [45, 60, 70, 65, 95, 85];
var current = 60;
function passed(score) {
return score > current;
}
console.log(scores.every(passed)); // == > false

Contoh di atas memperkenalkan anda kepada kaedah Tatasusunan baharu dalam ECMAScript5 saya harap ia akan membantu anda!

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