Das Folgende ist ein Codebeispiel, um Ihnen die Nachahmungsimplementierung der neuen Methode forEach() von ECMA5-Arrays vorzustellen. Der spezifische Code lautet wie folgt:
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"); });
Es ist erwähnenswert:
1. Verwendung der Rückruffunktion
2.Die Bedeutung der Funktionen defineProperty und defineProperties
Diese beiden Funktionen können die vier Hauptmerkmale von Objekteigenschaften definieren – Wert, Beschreibbarkeit, Aufzählbarkeit und Konfigurierbarkeit
Ich habe noch etwas Zeit, Ihnen einige neue Array-Methoden in ECMA5 wie folgt vorzustellen:
Als ich heute Übungen machte, bin ich auf fitter() gestoßen; ich habe diese neuen Array-Methoden schon einmal gesehen, aber sie wurden noch nie im tatsächlichen Kampf verwendet, deshalb werde ich sie heute überprüfen;
forEaach()
Diese Methode durchläuft ein Array vom Anfang bis zum Ende und ruft dann die angegebene Funktion für jedes Element im Array auf. Diese Funktion dient als erster Parameter von foreach. Die aufgerufene Funktion kann drei Parameter haben: das aktuelle Array-Element, den Index des aktuellen Elements und das zu durchlaufende Array. Wenn es nur einen Parameter gibt, ist dieser Parameter das aktuelle Array-Element.
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() ;
Die Methode „map()“ übergibt jedes Element des aufgerufenen Arrays an die angegebene Funktion und gibt ein Array zurück (genau das gleiche Format wie das aufrufende Array), das den Rückgabewert der Funktion enthält : Es muss einen Rückgabewert haben und darf das Array, aus dem es aufgerufen wird, nicht ändern.
var a = [1,2,3]; b = a.map(function(x) { return x * x; }); filter()
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() ;
In every()Nur wenn alle Array-Elemente die Beurteilungsfunktion aufrufen und true zurückgeben, ist der Rückgabewert etwas ähnlich wie &;
In manchen () gibt es true zurück, solange ein Array-Element die Beurteilungsfunktion als wahr aufruft.