Rumah >hujung hadapan web >tutorial js >Apakah kaedah baharu tatasusunan ECMA5 dan kemahiran implementasi_javascript tiruan forEach().

Apakah kaedah baharu tatasusunan ECMA5 dan kemahiran implementasi_javascript tiruan forEach().

WBOY
WBOYasal
2016-05-16 15:33:561549semak imbas

Berikut ialah contoh kod untuk memperkenalkan kepada anda pelaksanaan tiruan kaedah baharu untukEach() tatasusunan ECMA5 Kod khusus adalah seperti berikut,

var o = {
       forEach: function (callback) {
         // alert(this.length);
         for (var i = , len = this.length; i < len; i++) {
           callback && callback(this[i], i, this);
         }
       },
       get length(){
         var sum=;
         for(var n in this) {
           sum+=;
         }
         return sum;
       }
     };
     Object.defineProperty(o,"length",{enumerable:false});
     Object.defineProperty(o,"forEach",{enumerable:false});
     o[] = ;
     o[] = ;
     o[] = ;
     o.forEach(function(v,i,arr){
       arr[i]=v+;
       console.log(arr[i]+"callback");
     });

Perlu diperhatikan:

1. Penggunaan fungsi panggil balik

2. Maksud defineProperty dan defineProperties fungsi

Kedua-dua fungsi ini boleh mentakrifkan empat ciri utama sifat objek-nilai, kebolehtulisan, kebolehbilangan dan kebolehkonfigurasian

Saya masih mempunyai sedikit masa untuk memperkenalkan kepada anda beberapa kaedah tatasusunan baharu dalam ECMA5 seperti berikut:

Semasa saya melakukan latihan hari ini, saya terjumpa fitter(); Saya telah melihat kaedah tatasusunan baharu ini sebelum ini, tetapi ia tidak pernah digunakan dalam pertempuran sebenar, jadi saya akan menyemaknya hari ini;

forEaach()

Kaedah ini merentasi tatasusunan dari awal hingga akhir, dan kemudian memanggil fungsi yang ditentukan untuk setiap elemen dalam tatasusunan. Fungsi ini berfungsi sebagai parameter pertama foreach. Fungsi yang dipanggil boleh mempunyai tiga parameter, iaitu elemen tatasusunan semasa, indeks elemen semasa dan tatasusunan yang dilalui Jika terdapat hanya satu parameter, maka parameter ini ialah elemen tatasusunan semasa.

var data = [1,2,3,4,5] ;
// 计算数组的和
var sum = 0 ; 
data.forEach(function(value){sum += value; }); // 这里的value 分别代指 data[0~4];
console.log( sum ) // 15
// 每个数组元素自加1
data.forEach(function(v, i, a){ a[i] = v + 1; }) // v 分别代指 data[0~4]; a 代指data;
map() ;

Kaedah map() menghantar setiap elemen tatasusunan yang dipanggil ke fungsi yang ditentukan dan mengembalikan tatasusunan (format yang sama seperti tatasusunan panggilan), yang mengandungi nilai pulangan fungsi : Ia mesti mempunyai nilai pulangan dan tidak mengubah tatasusunan ia dipanggil.

var a = [1,2,3];
b = a.map(function(x) { return x * x; });
filter() 
Nilai pulangan bagi fungsi ini ialah subset daripada fungsi panggilan, kerana ungkapan fungsi yang dihantar kepadanya digunakan untuk membuat pertimbangan logik Jika ia benar, nilai semasa ditolak ke dalam tatasusunan subset untuk dikembalikan.

var getNum = function (a, b, k) {
return a.filter(function (v) {return b.indexOf(v) > -1;})[k-1];
}
var A = [3,4,5,6,7,8,9];
var B = [12,10,8,6];
console.log(getNum(A, B, 1))
console.log(getNum(A, B, 2));
every() some() ;
Parameter kedua-dua fungsi ini ialah kedua-dua fungsi penghakiman, yang menilai elemen tatasusunan dan nilai pulangan adalah benar atau salah;

Dalam setiap()Hanya apabila semua elemen tatasusunan memanggil fungsi penghakiman dan mengembalikan benar, nilai pulangan adalah benar dengan &;;

Dalam sesetengah(), selagi satu elemen tatasusunan memanggil fungsi penghakiman sebagai benar, ia akan kembali benar.

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