The following is a code example to introduce to you the imitation implementation of the new method forEach() of ECMA5 arrays. The specific code is as follows,
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"); });
It is worth noting:
1. Use of callback function
2.The meaning of defineProperty and defineProperties functions
Both of these two functions can define the four major characteristics of object properties-value, writability, enumerability, and configurability
I still have some time to introduce to you several new methods of arrays in ECMA5 as follows:
When I was doing exercises today, I came across fitter(); I have seen these new methods of arrays before, but they have never been used in actual combat, so I will review them today;
forEaach()
This method traverses an array from beginning to end, and then calls the specified function for each element in the array. This function serves as the first parameter of foreach. The called function can have three parameters, which are the current array element, the index of the current element, and the array being traversed. If there is only one parameter, then this parameter is the current 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() ;
The map() method passes each element of the called array to the specified function and returns an array (exactly the same format as the calling array), which contains the return value of the function. Note: It must have a return value and not change the array it is called from.
var a = [1,2,3]; b = a.map(function(x) { return x * x; }); filter()
The return value of this function is a subset of the calling function, because the functional expression passed to it is used to make logical judgments. If it is true, the current value is pushed into the subset array to be returned.
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() ;
The parameters of these two functions are both a judgment function, which judges the array elements, and the return value is true or false;
In every()Only when all array elements call the judgment function and return true, the return value is true; somewhat similar to &;
In some(), as long as one array element calls the judgment function to be true, it will return true.