Rumah  >  Artikel  >  hujung hadapan web  >  Tafsiran kaedah Tatasusunan tatasusunan Javascript_Pengetahuan asas

Tafsiran kaedah Tatasusunan tatasusunan Javascript_Pengetahuan asas

WBOY
WBOYasal
2016-05-16 15:10:481264semak imbas

Bersambung dari artikel sebelumnya "Pengenalan Asas kepada Array Javascript", artikel ini memperkenalkan semua kaedah Array secara terperinci.

Semua kaedah tatasusunan ditakrifkan pada Array.prototype, dan Array.prototype itu sendiri juga merupakan tatasusunan.

array.concat()

Salinan cetek tatasusunan semasa dan tambahkan parameter yang diterima pada penghujung tatasusunan baharu. Tatasusunan asal tidak berubah.

Tatabahasa

array.concat(nilai1, nilai2, ..., nilaiN)
Parameter ialah nilai tatasusunan atau bukan tatasusunan yang perlu digabungkan

var arr1 = [1, 2, 3];
var obj = {animal : 'monkey'};
var arr2 = arr1.concat([4, 5, 6], obj, [7, 8, 9]);
// arr1 [1, 2, 3]
// arr2 [1, 2, 3, 4, 5, 6, {animal : 'monkey'}, 7, 8, 9]

obj.animal = 'tiger';
// [1, 2, 3, 4, 5, 6, {animal : 'tiger'}, 7, 8, 9]

Anda boleh menggabungkan nilai tatasusunan atau bukan tatasusunan, tetapi ambil perhatian bahawa jika anda memasukkan objek, objek itu masih merujuk kepada objek asal.

array.join()

Mengembalikan rentetan yang digabungkan dengan semua elemen tatasusunan menggunakan pembatas lalai ialah koma.

Tatabahasa

array.join(seperator)
Parameternya ialah pemisah

var arr1 = [1, 2, 3];
var str = arr1.join(); // 1,2,3
str = arr1.join('#'); // 1#2#3

Apabila memasang sejumlah besar serpihan rentetan, kaedah cantuman adalah lebih pantas daripada operator +elemen.

Menggunakan Array(3) baharu akan menjana tatasusunan kosong dengan panjang tiga, dan digabungkan dengan kaedah join(), anda boleh mengulang rentetan tertentu.

var str = new Array(3).join('-+'); // -+-+

Bilangan ulangan ialah panjang tatasusunan tolak satu, kerana rentetan ialah pembatas.

Memandangkan tatasusunan itu sendiri ialah objek, ia mempunyai kaedah toString(), yang juga boleh digunakan untuk menyambung tatasusunan menjadi rentetan, tetapi pemisah hanya boleh menjadi koma.

var arr1 = [1, 2, 3];
arr1.toString(); // 1,2,3

Malah, ia akan terlebih dahulu memanggil kaedah toString() setiap elemen.

array.push()

Tambahkan satu atau lebih parameter pada penghujung tatasusunan dan kembalikan panjang tatasusunan. Tukar tatasusunan itu sendiri.

Tatabahasa

array.push(nilai1, nilai2, ..., nilaiN);
Contoh

var arr1 = [1, 2, 3];
var len = arr1.push(4, 5);

console.log(len); // 5
console.log(arr1); // [1, 2, 3, 4, 5]

Kaedah lain juga boleh dilaksanakan untuk memasukkan nilai pada akhir tatasusunan.

arr1[arr1.length] = 6; // [1, 2, 3, 4, 5, 6]  
array.pop()

Padamkan item terakhir dalam tatasusunan dan kembalikan item yang dipadamkan. Tukar tatasusunan itu sendiri.

var arr1 = [1, 2, 3];
arr.pop(); // [1, 2] 返回 3

Jika tatasusunan kosong, kembalikan tidak ditentukan.

array.unshift()

Masukkan satu atau lebih parameter ke dalam kepala tatasusunan dan kembalikan panjang tatasusunan. Tukar tatasusunan itu sendiri.

var arr1 = [1, 2, 3];
var len = arr1.unshift(4, 5);

console.log(len); // 5
console.log(arr1); // [4, 5, 1, 2, 3]

array.shift()

Padamkan item pertama tatasusunan dan kembalikan item yang dipadamkan. Tukar tatasusunan itu sendiri.

var arr1 = [1, 2, 3];
arr.shift(); // [2, 3] 返回 1

Jika tatasusunan kosong, kembalikan tidak ditentukan.

array.sort()

Kaedah ini mengisih mengikut nilai yang dikembalikan oleh kaedah toString() setiap elemen, jadi hasil yang dijangkakan biasanya tidak diperolehi.

var arr1 = [1, 2, 3, 14, 24];
arr1.sort(); // [1, 14, 2, 24, 3]

Tetapi kaedah sort() boleh menerima fungsi tersuai untuk perbandingan. Fungsi perbandingan menerima dua parameter, terutamanya sort() yang lalai kepada tertib menaik, jadi jika anda mahu parameter pertama berada di hadapan parameter kedua, anda mesti mengembalikan nombor negatif, jika sama, kembalikan 0, dan jika ia adalah di belakang, kembalikan nombor positif.

var compare = function(a, b){
  return a - b;
}

var arr2 = [1, 12, 2, 23, 3 , 5, 4];
arr2.sort(compare); // [1, 2, 3, 4, 5, 12, 23]

Membandingkan rentetan boleh digunakan bersama dengan kaedah string.localeCompare().

var arr3 = ['F', 'e', 'f', 'E'];
arr3.sort(function(a, b){
  return a.localeCompare(b);
});
// ['e', 'E', 'f', 'F'] 

array.reverse()

Terbalikkan susunan elemen tatasusunan dan kembalikan tatasusunan itu sendiri.

var arr1 = [1, 4, 3, 2];
arr1.reverse(); // [2, 3, 4, 1]

array.slice()

Salin cetek bahagian tatasusunan tanpa mengubah tatasusunan itu sendiri.

array.slice(mula, tamat);
Kaedah ini menerima dua parameter, yang terakhir boleh ditinggalkan, dan lalai ialah panjang tatasusunan itu sendiri.

var arr1 = [1, 2, 3, 4, 5, 6];

arr1.slice(4); // [5, 6]
arr1.slice(2, 4); // [3, 4]
arr1.slice(-3); // [4, 5, 6]

Jika nombor negatif dimasukkan, panjang tatasusunan akan ditambah secara automatik untuk cuba menjadi nombor bukan negatif.
Melepasi nilai yang nilai mutlaknya kurang daripada panjang tatasusunan bermakna mengambil bilangan elemen nilai mutlak negatif dari belakang ke hadapan. Sebagai contoh, tiga elemen terakhir diambil dalam contoh.

array.splice()

Ini ialah kaedah yang paling berkuasa dan biasa digunakan dalam tatasusunan Ia boleh mencapai pemadaman, pemasukan dan penggantian.

Tatabahasa

array.slice(mula, kira, item);
Kaedah ini mengalih keluar satu atau lebih elemen dan menggantikannya dengan elemen baharu. mula ialah kedudukan permulaan, kiraan ialah bilangan pemadaman, item ialah elemen yang baru ditambah (terdapat lebih daripada satu item dan boleh diabaikan), dan elemen yang dipadam dikembalikan dalam bentuk tatasusunan.

var arr1 = [1, 2, 3, 4, 5];
//删除
arr1.splice(2, 1); // [1, 2, 4, 5] 返回 [3]
//插入
arr1.splice(3, 0, 6, 7); // [1, 2, 4, 6, 7, 5]
//替换
arr1.splice(1, 2, 8, 9); // [1, 8, 9, 6, 7, 5] 返回[2, 4]

Berikut memperkenalkan beberapa kaedah baharu ECMAScript5, terutamanya kerana ie8 tidak menyokongnya.

indexOf() dan lastIndexOf()

Cari kedudukan indeks item yang sepadan dalam tatasusunan Parameter kedua menunjukkan kedudukan permulaan arah carian yang sepadan Jika tidak dijumpai, kembalikan -1;
indexOf() mencari dari depan ke belakang, dan lastIndexOf() mencari dari belakang ke hadapan.

var arr1 = [1, 2, 3, 4, 3, 2, 1];
arr1.indexOf(2); // 1
arr1.indexOf(2, 3); // 5

arr1.lastIndexOf(3); // 4
arr1.lastIndexOf(3, 4) // 2

Kaedah berulang

Kaedah berikut menerima dua parameter, yang pertama ialah fungsi untuk dijalankan bagi setiap item, dan yang kedua ialah skop di mana fungsi itu berjalan.
Fungsi berjalan mempunyai tiga parameter, iaitu item semasa, kedudukan, dan tatasusunan itu sendiri.

array.every()

Jalankan fungsi yang diberikan, dan jika setiap item lelaran mengembalikan benar, ia akhirnya akan kembali benar.

var arr1 = [1, 2, 3, 4, 5];
arr1.every(function(item, index, array){
  return item > 3;
});
// false

array.some()

运行给定函数,如果迭代中有一项返回true,则最终返回true。

arr1.some(function(item, index, array){
  return item > 3;
});
// true

array.map()

运行给定函数,将迭代中返回的值组成数组,返回该数组。

arr1.map(function(item, index, array){
  return item * 2;
});
// [2, 4, 6, 8, 10]

array.filter()

运行给定函数,将迭代中返回true的元素以数组形式返回

arr1.filter(function(item, index, array){
  return item > 3;
});
// [4, 5]

array.forEach()

运行给定函数,不返回任何值。类似于普通的for循环的功能。

归并方法

函数接受两个参数,第一个参数是每一个运行的自定义函数,第二项是作为归并基础的初始值。
自定义函数接受四个参数,分别是前一项,当前项,位置,数组。

array.reduce() 与 array.reduceRight()
var splitstr = function(prev, item, index, array){
  return prev + '#' + item;
}

var arr1 = [1, 2, 3, 4, 5];
arr1.reduce(splitstr, 8); // 8#1#2#3#4#5
arr1.reduceRight(splitstr, 8); // 8#5#4#3#2#1

小结

这一篇介绍了数组方法的种种细节和注意问题,下一篇将会介绍数组更高级的用法。本篇后续会添加ECMAScript6 新增加的数组方法的介绍。

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