JavaScript常用的数组方法-知识回顾

143 阅读5分钟

一、concat()

concat()方法 连接两个或多个数组 该方法不改变原来数组

    let arr1 = [1,2,3];
    let arr2 = [4,5,6];
    let arr3 = [7,8,9];
    let arr4 = arr1.concat(arr2);
    console.log(arr1);// [1,2,3]
    console.log(arr4);// [1,2,3,4,5,6]
    arr4=arr1.concat(arr2,arr3);
    console.log(arr4);// [1,2,3,4,5,6,7,8,9]

二、join()

join()方法 把数组中所有元素转化为字符串 通过指定分隔符进行分割 默认为',' 不改变原数组

    let arr = [1,2,3]
    console.log(arr.join(' '))// '123'
    console.log(arr) // [1,2,3]

三、push()

push()方法 向数组末尾添加一个或多个元素 改变原数组 返回值为数组长度

    let a = [1,2,3];
    let b = a.push('4','5');
    console.log(a);// [1,2,3,4,5]
    console.log(b);// 5

四、pop()

pop()方法 删除数组最后一个值 改变原数组 返回删除值

    let a = [1,2,3];
    let b = a.pop();
    console.log(a);//[1,2]
    console.log(b);//3

五、shift()

shift()方法 删除数组第一个值 改变原数组 返回删除值

    let a = [1,2,3];
    let b = a.shift();
    console.log(a);//[2,3]
    console.log(b);//1

六、unshift()

unshift()方法 向数组开头添加一个或多个值 改变原数组 返回数组长度

    let a = [2,3,4];
    let b = a.unshift('0',1);
    console.log(a);//[ '0', 1, 2, 3, 4 ]
    console.log(b);//5

七、slice()

slice()方法 获取原数组包含start到end的元素 返回新数组(新数组包含start不包含end) 不改变原数组

    let a = [1,2,3,4,5];
    let b = a.slice(0,3);
    let c = a.slice(-1); 
    let d = a.slice(-1,2)// 错误写法
    console.log(b);// [1,2,3]
    console.log(c);// [5]
    console.log(d);

八、splice()

splice()方法 删除从index处开始的0个或多个元素 并用参数列表中声明的一个或多个元素进行替换 改变原数组 返回含有删除元素的数组

    let a = [1,2,3,4,5,6]
    console.log(a.splice(0,2,1)) // 返回由删除元素组成的数组 [1,2]
    console.log(a)               // splice()方法改变原数组 [1,3,4,5,6]
    a = [1,2,3,4,5,6]
    console.log(a.splice(0,2,1,2)) // [1,2]
    console.log(a) // [1,2,3,4,5,6]

九、sort()

sort()方法 按照Unicode码进行排序 默认为升序

    let fruit = ['orange','bananer','apple'];
    console.log(fruit.sort()); // ['apple','bananer','orange']
    let a = [1,10,21,2];
    console.log(a.sort()); // [1,10,2,21]

十、reverse()

reverse()方法 颠倒数组中元素的顺序 改变原数组 返回颠倒后的原数组

    let a = [1,2,3];
    console.log(a.reverse()); // [3,2,1]
    console.log(a); // [3,2,1]

十一、indexOf()和lastIndexOf()

indexOf(arg1,arg2)和lastIndexOf(arg1,arg2)方法 接受两个参数 一个是查找的值 另一个是查找的起始位置。存在 返回查找位置 不存在返回-1indexOf()方法从前往后找 而lastIndexOf()方法从后往前找

    let a = [2,1,3,4,2,4,5];
    console.log(a.indexOf(6)); // 4
    console.log(a.indexOf(2,3));// 2 后面的2
    console.log(a.indexOf(2)); // 0

十二、every()

every()方法 对数组每一项都运行给定的函数 每一项返回true 则返回true

    const isBig = (value,key,array) =>{// value 当前值 key当前值的索引 array 测试every()方法的数组
        return value>10
    }
    let a = [1,2,10,3];
    let b = [11,12,13,14,15,16];
    console.log(a.every(isBig)); // false
    console.log(b.every(isBig)); // true

十三、some()

some()方法 对数组每一项运行给定的函数 任意一项返回true 则返回true

    const isBig = (value,key,array) =>{// value 当前值 key当前值的索引 array 测试some()方法的数组
        return value>10
    }
    let a = [1,2,0,3];
    let b = [11,2,13,4,15,6];
    console.log(a.some(isBig)); // false
    console.log(b.some(isBig)); // true

十四、filter()

filter()方法 对数组每一项运行给定的函数 不改变原数组 返回为true项组成的数组

    let a = ['a', 'bb', 'ccc', 'd', 'ee'];
    let b = a.filter((e)=>{
       return  e.length>1
    })
    console.log(a); // ['a', 'bb', 'ccc', 'd', 'ee']
    console.log(b); // ['bb','ccc','ee']

十五、map()

map()方法 对数组每一项运行给定的函数 不改变原数组 返回每一项运行结果组成的新数组

    let a = ['a','b','c'];
    let b = a.map((e)=>{
        return e+'_';
    })
    console.log(a); // ['a','b','c']
    console.log(b); // ['a_','b_','c_']

十六、forEach()

forEach()方法 对数组每一项运行给定函数 不改变原数组 不返回值

    let a = ['a','b','c'];
    let b = a.forEach((e)=>{
        console.log('遍历数组项为:',e);
        return e+'_';
    })
    console.log(a); // ['a','b','c']
    console.log(b);// undefined

ES6新增操作数组的方法

一、find()

find()方法 传入回调函数 找到符合条件的第一个元素 不改变原数组 返回符合条件的第一个元素

    let a = ['a','b',1,'3'];
    let b = a.find((e)=>{
        return typeof e ===  "number"
    })
    console.log(a); // ['a','b',1,'3']
    console.log(b); // 1

二、findIndex()

findIndex()方法 传入回调函数 找到符合条件的第一个元素 不改变数组 返回符合条件的第一个元素下标

    let a = ['a','b',1,'3']
    let b = a.findIndex((e)=>{
        return typeof e === "number"
    })
    console.log(a); // ['a','b',1,'3']
    console.log(b); // 2

三、fill()

fill()方法 用一个固定值value 填充从start到end元素 不包括end 改变原数组 返回填充后的数组

    let a= [1,2,3,4,5];
    let b = a.fill('a',1,5);
    console.log(a); // [1,'a','a','a','a']
    console.log(b); // [1,'a','a','a','a']

四、copyWithin()

copyWithin(target,start,end)方法 从原数组target位置开始替换为复制元素 原数组start到end为复制元素(默认从0开始复制) 改变原数组 返回复制后的数组

    let a = [1,2,3,4,5];
    console.log(a.copyWithin(3,0,2));// [1,2,3,1,2]
    console.log(a);// [1,2,3,1,2]

五、form()

from(arg[,fuc])方法 对一个类似数组或可迭代对象创建一个新的浅拷贝实例数组 如果第二个参数存在 则进行回调函数执行

    let a = [1,2,3,4,5];
    console.log(Array.from(a,(e)=> e+'_')); // [ '1_', '2_', '3_', '4_', '5_' ]
    console.log(Array.from('foo')); // [ 'f', 'o', 'o' ]

六、of()

of()方法 用于将一组值转化为数组 补充Array()方法的不足

    console.log(Array.of(1,2,3));//[ 1, 2, 3 ]
    console.log(Array(3)); //[ <3 empty items> ]
    console.log(Array.of(3)); // [ 3 ]

七、entries()

entries()方法 返回新的Array Iteration对象 该对象包含数组每个索引的键值对

    let a = [1,2,3];
    console.log(a.entries())
    for(let i of a.entries()){
        console.log(i)//[0,1] [1,2] [2,3]
    }

八、values()

values()方法 返回新的Array Iteration对象 该对象包含数组每个索引的值

    let a = [1,2,3];
    console.log(a.values())
    for(let i of a.values()){
        console.log(i)//  1  2  3
    }

九、keys()

keys()方法 返回新的Array Iteration对象 该对象包含数组每个索引的键

    let a = [1,2,3];
    console.log(a.keys())
    for(let i of a.keys()){
        console.log(i) // 0  1  2
    }

十、includes()

includes()方法 判断数组是否存在该对象 参数:查找值,起始位置 可以替代Es5的indexOf()方法。indexOf()判断NaN会判断错误

    let a = [1,2,3,NaN];
    console.log(a.includes(2)) // true
    console.log(a.indexOf(NaN)) // -1
    console.log(a.includes(NaN))// true

参考资料

[1] segmentfault.com/a/119000001… [2]developer.mozilla.org/zhCN/docs/W…