js之数组方法

174 阅读3分钟

1、Array.prototype.concat(value, [value1])

可以合并多个数组,返回一个新的数组。如果数据中对象类型数据,只是进行浅拷贝,原始数组和新数组都引用相同的对象。

var a = [1,2,3, {a:'a'}];
var b = [[4],5];
a.concat(8, 9, b)//[1,2,3,{a:'a'},8,9,[4],5]

2、Array.prototype.copyWithin(target, [,start[,end]])

浅拷贝一个数组指定部分到数组中,总的数组长度不变。返回被改变的原始数组 target如果大于arr.length,将不发生拷贝。可以为负数 start可以是负数,如果没有传,从0开始 end可以是负数,如被忽略,认为到数组结束位置

var a = [1,2,3,4,5];
a.copyWithin(2, 1)//[1, 2, 2, 3, 4]

3、Array.prototype.every(callback(element[,index[,array]])[,thisArg])

Array.prototype.some(callback(element[,index[,array]])[,thisArg])

every方法测试数组中每个值,是否都满足callback要求,返回布尔值。不会改变原数组。如果空数组,将返回true

var a = [1,2,3,4,5];
a.every((item)=>(item>3))//false
a.every((item)=>(item>0))//true

some方法测试数组中,有某个值满足callback测试,返回布尔值。不会改变原数组

4、Array.prototype.includes(findValue[,fromIndex])

判断数组是否含有指定元素,返回布尔值 可以判断出NaN元素

var a=[1,2,NaN,4,5];
a.includes(2, -3)//false
a.includes(2, 1)//true
a.includes(NaN)//true

Array.prototype.indexOf(value[,fromIndex])

lastIndexOf类似 找到指定元素,返回索引,没有找到返回-1 如果fromIndex大于数组长度,直接返回-1

var a = [1,2,3,4,5];
a.indexOf('a')//-1
a.indexOf(2)//1
a.indexOf(2, 6)//-1

Array.prototype.find(callback[,thisArg])

找到第一个满足callback测试的值。否则返回undefined findIndex函数返回索引,没有满足返回-1

5、Array.prototype.flat(depth)

递归遍历数组,按照depth扁平化数组,返回一个新数组 默认深度为1,会去除掉空白项

var a = [1,2, [3,4], [[5]]];
a.flat()//[1,2, 3, ,4, [5]];
a.flat(2)//[1,2,3,4,5]
a.flat(Infinity)//[1,2,3,4,5]

var b = [1,2,,3,4];
b.flat()//[1,2,3,4]

Array.prototype.flatMap(callback(value[,index,array])[,thisArg])

与map、flat(1)起作用一样

var a = ['你好', '', '大家好'];
a.flatMap((item)=>(item.split(''))) //["你", "好", "大", "家", "好"]

6、Array.prototype.pop()

从数组最后删除一个元素,返回删除的元素,改变原始数组 如果是空数组,返回undefined

var a = [];
a.pop()//undefined

var b = [,,];
b.pop()//undefined

Array.prototype.push(element[,element...])

数组末尾追加多个元素,返回数组长度。改变原始数组

shift删除数组第一个元素,返回删除的值,没有返回undefined,改变原始数组 unshift数组开头追加多个元素,返回数组长度,改变原始数组

7、Array.prototype.reverse()

是数组元素位置颠倒,改变原始数组

Array.prototype.sort([,compareFunction])

数组排序

8、Array.prototype.join([,separator])

将数组元素拼接成字符串,并返回改字符串 分隔符,默认为逗号 如果元素为undefined或者null,被当做空字符串处理

var a = [,1,,]
a.join()//',1,'

9、Array.prototype.reduce(callback(accumulator,value[,index[,array]]))

为每个元素执行callback,返回累计结果 reduceRight方法类似

10、Array.prototype.slice([begin[, end]])

浅拷贝数组指定区间数据,返回一个新的数组,原始数组不会被改变 begin默认从0开始,可以是负数,[begin[, end]]大于数组长度,返回[] end默认数组长度,可以是负数

var a = [1,2,3,4,5];
var b = a.slice(2, 4)//b=[3,4] a=[1,2,3,4,5]

11、Array.prototype.splice(start[, deleteCount[, item1[, item2[, ...]]]])

通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组 deleteCount可以是0或负数,表示不删除元素 item表示要添加进来的元素

var a = [1,2,3,4,5];
a.splice(2, 2)//[3, 4] , a=[1,2,5]

var b = [1,2,3,4,5];
b.splice(3,2,'a', 'b','c')//[4, 5], a=[1,2,3,'a','b','c']