笔记:ES6的数组方法们

虽然网上总结的都特别好,但我还是记录一下自己用到过的数组方法们.
没用到过的就先记下来想用的时候再来看~ (肯定是不全的,也许有的还不太对,错了就再改8,蓝瘦....)
毕竟我这脑子是真的记不太住的,敲一遍总结一下还是有好处


遍历数组的方法们:

1.map

map给定了三个参数,value值,下标Index,还有原数组array
return回的是一个新数组,可以在函数体内做操作返回想要的数组

var arr = [2, 3, 4];
    var newArr = arr.map(function (value, index, array) {
        console.log(value, index, array);
        return value + 1;
    });

2.foreach

foreach和map同理,也给定了一样的三个参数
但是注意:foreach内不能使用break或return跳出循环,就没有返回值

var arr = [1, 2, 3, 4];
    arr.forEach(function (value, index, array) {
        console.log(value, index, array);
    })

3.some和every

  • some()
    有一个符合条件,则返回为真 不再执行
    如果没有就返回false
    some只要有true即返回不再执行了
var scores = [5,10,2,3];
    
        var result = scores.some(function (value) {
            console.log(value);
            return value > 7;//true
        })

        console.log(result);//5 10 true
  • every()
    所有符合条件,则返回为真
    每一个都会判断
    如果遇到不符合条件 返回false 不再执行
var scores = [5,8,1,10];

   var result = scores.every(function (value) {
        console.log(value);
        return value > 2;
    })

    console.log(result);// 5 8 1 false

4.filter

把数组中某些元素过滤掉,返回剩下的元素组成新数组
filter 把传入的函数一次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素

//保留偶数
 var arr = [1, 2, 4, 5, 6, 9, 10, 15];
 var newArr = arr.filter(function (value) { 
            return value % 2 == 0;
        })

        console.log(newArr);// [2, 4, 6, 10]
filter的这种特性可以用来做数组去重:

判断下标是否等于,不等于就是重复元素,返回false 会被filter处理掉

var arr = [1,2,3,4,1,3,5];

        var theArr = arr.filter(function (value, index, array) { 
            return array.indexOf(value) == index;
        })
        console.log(theArr);//[1, 2, 3, 4, 5]

5.for of

for of是我之前在使用foreach时发现不能return我想要的东西,搜百度发现它可以return

let arr=[1,2,3,4,5,6];
for (let value of arr){
    if (value==2){
        return value;
    } 
    
} 

6.find

find中的回调函数也默认给定三个参数,当前的value,下标Index,元素组array
其作用是遍历查找数组中符合条件的元素,回调函数返回true,如果没有就返回undefined
find返回查找到的符合条件的此元素
(用了一个别人写的例子)

[1, 4, -5, 10].find((n) => n < 0)  
// -5  
[1, 5, 10, 15].find(function(value, index, arr) {  
return value > 9;  
}) // 10 

7.findIndex

此方法依然可以有那三个参数
其作用可以是查找符合条件的元素的下标,如果没有就返回-1
find得到的还是那个符合条件的元素的下标

[1, 5, 10, 15].findIndex(function(value, index, arr) {  
return value > 9;  
}) // 2  

其他方法们:

1.lastIndexOf

写一个参数时:寻找这个参数在数组中最后出现的下标
两个参数时:
arr.lastIndexOf(a,b):从数组中的第b位开始从后向前搜索a,不存在返回-1

 var arr = [1,1,1,1,2,3,4,5,6,2,7];
        console.log(arr.lastIndexOf(2));
        //最后一个2的下标 9
        console.log(arr.lastIndexOf(2,3));
        //从索引值小3 从后向前找  不存在2 所以是-1

2.indexOf

与lastIndexOf相反
作用是查找元素在数组中第一次出现的位置,返回的是下标,没有返回-1

var a = [1, 2, 3, 4, 5];

var b = a.indexOf(2);
var c = a.indexOf(6);
console.log(b); // 1
console.log(c); // -1

3.reduce

previous: 当前元素之前的所有元素之和
current:当前元素

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

    var sum = arr.reduce(function (previous, current) {
        /**
         *
         *这里求的是 当前元素和之前所有元素之和
         1 2        1=1  2
         3 3        1+2=3  3
         6 4        1+2+3=6  4
         10 5       1+2+3+4=10   5
         15 6       1+2+3+4+5=15    6 */
        console.log(previous, current);
        return previous + current;
    })

字符串和其他方法:

最近碰到的字符串方法也写一下好了


1.includes

ES6新增字符串方法 str.includes() 包含就返回真,进入If判断,不包含返回假

   var newList1=this.list.filter((value)=>{
                    //ES6新增字符串方法 str.includes() 包含就返回真,进入If判断,不包含返回假
                    if (value.name.includes(kw)){
                       //把需要的value返回给新数组
                       return value;
                    }
                    
                });

2.padStart&&padEnd

在遇到需要写时间的时候,一般的格式是2018-01-08,但是我们获取的时间是个位数,就可以用这个方法来补位0

参数一:最大的位数长度
参数二:不满足长度的话,用开头什么数字补齐
padStart:在开头什么数字补齐
padEnd:在尾部用什么数字补齐

 var str="8";
    //padStart方法
    //参数一:最大的位数长度
    //参数二:不满足长度的话,用开头什么数字补齐
    //padEnd:在尾部用什么数字补齐
    var newStr=str.padStart(2,0);
    console.log(newStr);//08

3.in json

判断某个json中是否含有某个key 可以直接 "要查找的key" in 被查找的json
返回的值是true或false

let thejson = {
    name: "佩奇",
    age: 3

}
//判断是否有key值
let a = "id" in thejson;
console.log(a);

感觉常用到的大概就这么多啦,以后再添加
今天也有好好加油鸭!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容