今天来说一说es5新增加的几个数组方法吧:
首先是遍历数组的方法:every、some 、forEach、filter 、map
every是判断数组中的元素只有所有的元素都满足条件才会返回true,只要有一个不满足就会返回false不再进行遍历,所以我们可以通过设置return false来停止遍历。只要一个不满足就会停止,我觉得节省遍历数组的性能。返回值为boolean.every 的话我还没有应用过。里面有函数参数是item, index的顺序
```JS
var a = [1, 2, 3, 5];
a.every(item=>item>0);
//true
a.every(item=>item>1);
//false
```
some函数的也会返回一个bool类型,some 函数就是遍历数组,只要有一个返回true 就会结束遍历否则false就继续就知道找到满足,或者数组尾部。只要是false就会继续遍历。里面有函数参数是item, index的顺序
```JS
var a = [1, 2, 3, 5];
a.some(item=>{console.log(item);if(item>2) return true);
//1, 2, 3 true
```
forEach函数就是无法停顿会一直遍历下去直到最后一个,里面有函数参数是item, index的顺序,无法阻止遍历行为 return, break不好使阻挡不住我哈哈
```JS
var a = [1, 2, 3, 5];
a.forEach( alert);
```
filter函数就是一个对数组元素里进行过滤,可以返回一个新数组可以减少数组的遍历。
```js
var a = [1, 2, 3, 5];
a.filter(item=>item>1);
// [2, 3, 5]
```
map函数也是一个遍历方法,无法阻止遍历行为 return, break不好使阻挡不住我哈哈,函数参数item, index
```JS
var a = [1, 2, 3, 5];
a.map( console.log);
```
这回要讲一下reduce函数这是一个用于数组求和的好方法。
arr.reduce(callback[, initialValue]);
第一个参数callback还有四个参数,第二个为设定的初始值(可选值)
prev: 上一次叠加的结果值或者初始值
cur: 当前会参与叠加的项
index: 当前值的索引
arr: 数组本身
```js
[1, 2, 4, 7].reduce(function(prev,next){
console.log("prev:",prev);
console.log("next:",next);
return prev+next;});
prev: 1
next: 2
prev: 3(1+2的和)
next: 4
prev: 7(3+4的和)
next: 7
14
```
这就是利用reduce得到的和所以说就是每一次的pre就是前一次的和。
reduceRight是一个和reduce相同的方法,但是是从数组倒着数的进行求和
```js
[1, 2, 4, 7].reduceRight(function(prev,next){
console.log("prev:",prev);
console.log("next:",next);
return prev+next;
});
prev: 7
next: 4
prev: 11
next: 2
prev: 13
next: 1
14
```
isArray方法一用来判断是否是一个数组
```js
## polyfill:
假如不存在 Array.isArray(),则在其他代码之前运行下面的代码将创建该方法这个方法是比较靠谱的检查方案。
if (!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}
```
画外题添加一个判断数组的方法:
我们以前可以使用instanceof方法,这个方法判断数组的原因是instanceof运算符可以用来判断某个构造函数的prototype属性所指向的對象是否存在于另外一个要检测对象的原型链上。被判断的值的原型链上能够找到Array构造函数的话,那么这个被判断的应该就是一个数组,如果这个被判断的原型链上只能找到Object构造函数的话,那么它就不是一个数组。
还利用过判断constructor但是这个是最危险的判断方式因为constructor随时可以改变指向。下一集讲讲我理解的原型链。
indexOf,lastIndexOf分别可以返回要查找元素在数组中的第一次出现的位置索引和最后一次出现的位置索引可以来判读啊元素是否重复。