前端知识点总结——数组的方法

数组的方法

  1. push():向数组末尾添加一个或多个元素,返回新的长度,会改变原数组
let arr1 = [1,2,3]
let length = arr1.push(4,5,6)

console.log(length); // 6
console.log(arr1); // [ 1, 2, 3, 4, 5, 6 ]
  1. pop():删除数组最后一个元素,返回删除的元素,会改变原数组
let arr1 = [1,2,3]
let nums = arr1.pop()

console.log(nums); // 3
console.log(arr1); // [ 1, 2 ]
  1. unshift():向数组开头添加一个或多个元素,返回新的长度,会改变原数组
let arr1 = [1,2,3]
let length = arr1.unshift(4,5,6)

console.log(length); // 6
console.log(arr1); // [ 4, 5, 6, 1, 2, 3 ]
  1. shift():删除数组的第一个元素,返回删除的值,会改变原数组
let arr1 = [1,2,3]
let nums = arr1.shift()

console.log(nums); // 1
console.log(arr1); // [ 2, 3 ]
  1. concat():连接两个或多个数组,返回一个新数组,不会改变原数组
let arr1 = [1,2,3]
let arr2 = [4,5,6,7,8]
let arr3 = arr1.concat(arr2)
let arr4 = arr1.concat([11,22,33,44])

console.log(arr3); //[1, 2, 3, 4, 5, 6, 7, 8]
console.log(arr4); //[1,  2,  3, 11, 22, 33, 44]
  1. join():将数组的元素放入到字符串中,,通过指定分隔符分隔,默认为,,返回一个字符串,不改变原数组
let arr1 = [1,2,3]
let str1 = arr1.join()
let str2 = arr1.join(':')

console.log(str1); // 1,2,3
console.log(str2); // 1:2:3
console.log(typeof str1); // string
  1. slice( start, end ):返回一个新的数组,包含从startend(左闭右开)的原数组中的元素,不会改变原数组
let arr1 = [1,2,3]
let arr2 = arr1.slice(0,2)

console.log(arr1); // [ 1, 2, 3 ]
console.log(arr2); // [ 1, 2 ]
  1. splice( start, deleteCount, replace):从index处开始删除deleteCount个数(左闭右开),并使用replace的数来进行替换,返回被删除元素的数组,会改变原数组
let arr1 = [1,2,3]
console.log(arr1); // [ 1, 2, 3 ]
let arr2 = arr1.splice(1,0)
console.log(arr2); // [] 返回的是被删除元素组成的数组,删除个数为0,返回空数组
let arr3 = arr1.splice(1,0,8)
console.log(arr1); // [ 1, 8, 2, 3 ]
let arr4 = arr1.splice(1,1)
console.log(arr1); // [ 1, 2, 3 ]
  1. sort():排序,返回排序过后的新数组,会改变原数组 : 最好手动规定排序的规则,默认排序易出现混乱
let arr1 = [1,2,5,3,8,56,89,5,89,3]

let arr2 = arr1.sort((a,b) => a - b)
console.log(arr2); // [  1,  2,  3,  3,  5,  5, 8, 56, 89, 89 ]
console.log(arr1); // [  1,  2,  3,  3,  5,  5, 8, 56, 89, 89 ]

let arr3 = arr1.sort((a,b) => b - a)
console.log(arr2); // [  89,  89,  56,  8,  5,  5,  3,  3,  2,  1]
console.log(arr1); // [  89,  89,  56,  8,  5,  5,  3,  3,  2,  1]
  1. reverse():颠倒数组中元素的顺序,返回颠倒后的数组,会改变原数组
let arr1 = [1,4,6,3,8,9]
let arr2 = arr1.reverse(arr1)

console.log(arr1); // [ 9, 8, 3, 6, 4, 1 ]
console.log(arr2); // [ 9, 8, 3, 6, 4, 1 ]
  1. filter():对数组中的每个元素执行指定函数,如果返回结果为true则加入到新数组中,不改变原数组
let arr1 = [1,4,6,3,8,9]
let arr2 = arr1.filter( index => index > 3)

console.log(arr1); // [ 1, 4, 6, 3, 8, 9 ]
console.log(arr2); // [ 4, 6, 8, 9 ]
  1. map():对数组中每个元素都执行指定函数,返回的结果组成一个新数组,不会改变原数组
let arr1 = [1,2,3,4,5,6]
let arr2 = arr1.map(index => ++index)

console.log(arr1); // [ 1, 2, 3, 4, 5, 6 ]
console.log(arr2); // [ 2, 3, 4, 5, 6, 7 ]
  1. forEach():遍历数组
let arr1 = [1,2,3,4,5,6]
let arr2 = []
arr1.forEach(index => arr2.push(index))

console.log(arr2); // [ 1, 2, 3, 4, 5, 6 ]
  1. indexOf( searchElement, fromIndex )lastIndexOf( searchElement, fromIndex ):都是查找是否存在存在某个值,不存在返回-1,存在返回位置
let arr1 = [1,2,3,4,5,6]
let arr2 = [11,22,33,44,55,66]
let a = arr1.indexOf(1,0)
let aa = arr1.indexOf(1,1) // 从1开始查找
let b = arr2.lastIndexOf(22,5) // 从下标为5开始查找,22不存在

console.log(a,b); // 0 1
console.log(aa); // -1
  1. every()some():都是对数组的每一项执行执行函数,every()是全部都为true时才返回truesome()是只要有一项为true时都为true
let arr1 = [1,2,3,4,5,6]
let a = arr1.every(index => index > 5)
let aa = arr1.some(index => index > 5)

console.log(a); // false
console.log(aa); // true

ES6新增操作数组方法

  1. find():传入一个回调函数,找到数组中符合搜索规则的第一个元素
let arr1 = [1,2,3,4,5,6,9]
let a = arr1.find(index => index/3 === 3)

console.log(a); // 9
  1. findIndex():传入一个回调函数,找到数组中符合搜索规则的第一个元素的下标
let arr1 = [1,2,3,4,5,6,9]
let a = arr1.findIndex(index => index/3 === 3)

console.log(a); // 6
  1. fill(value, start, end):使用新元素分别替换数组中startend(左闭右开)的元素,会改变原数组
let arr1 = [1,2,3,4,5,6,9]
let arr2 = arr1.fill(666, 0,3)

console.log(arr1); // [  666, 666, 666, 4,  5,   6,   9]
console.log(arr2); // [  666, 666, 666, 4,  5,   6,   9]
  1. copyWithin():选择数组的某个下标,从该位置开始复制数组元素,默认从0开始复制
let arr1 = [0,1,2,3,444,5,6,7,8,9]
let arr2 = [0,1,2,3,444,5,6,7,8,9]
let arr3 = [0,1,2,3,4,5,6,7,8,9]
let a = arr1.copyWithin(4) // 从下标0复制到下标4(左闭右开),插入到下标为4的位置,后面值依次排列,总长不变
let b = arr2.copyWithin(4,2) // 从下标2复制到下标4(左闭右开),插入到下标为4的位置,后面值依次排列,总长不变
let c = arr3.copyWithin(4,1,5) // 从下标1(包括)开始复制,结束位置是5(不包括),从位置4开始替换后面的值,总长不变

console.log(a); // [0, 1, 2, 3, 0, 1, 2, 3, 444, 5]
console.log(b); // [0, 1, 2, 3, 2, 3, 444, 5, 6, 7]
console.log(c); // [0, 1, 2, 3, 1, 2, 3, 4, 8, 9]
  1. from():将类似数组的对象(array-like object)和可遍历(iterable)的对象转为真正的数组
let str1 = 'a,b,c,d'
let str2 = ['1','2','3','4']
let str3 = 'hello world'

let arr1 = Array.from(str1)
let arr2 = Array.from(str2)
let arr3 = Array.from(str3)

console.log(arr1); // [  'a' , ',' , 'b' , ',' , 'c' , ',' , 'd']
console.log(arr2); // [ '1', '2', '3', '4' ]
console.log(arr3); // [  'h', 'e', 'l', 'l',  'o', ' ', 'w', 'o',  'r', 'l', 'd']
  1. entries():返回键值对,不改变原数组
// 数组
let arr1 = [1,2,3,4,5]
let arr2 = arr1.entries()

for (const iterator of arr2) {
  console.log(iterator); //[ 0, 1 ] [ 1, 2 ] [ 2, 3 ] [ 3, 4 ] [ 4, 5 ]
}

// Set
let arr = new Set([1,2,3,'a','b'])
for (const iterator of arr.entries()) {   
  console.log(iterator); // [ 1, 1 ] [ 2, 2 ] [ 3, 3 ] [ 'a', 'a' ] [ 'b', 'b' ]
}

//Map
let arr = new Map([['a',1],['b',2],[false,3],[true,4]])
arr.set(1,5)

console.log(arr); // Map(5) { 'a' => 1, 'b' => 2, false => 3, true => 4, 1 => 5 }
for (const iterator of arr.entries()) {
  console.log(iterator); // [ 'a', 1 ]  [ 'b', 2 ]  [ false, 3 ]  [ true, 4 ]  [ 1, 5 ]
} 
  1. values():返回键值对中的value值,不改变原数组
// 数组
let arr1 = [1,2,3,4,5]
let arr2 = arr1.values()

for (const iterator of arr2) {
  console.log(iterator);  // 1 2 3 4 5
}

//Set
let arr = new Set([1,2,3,'a','b'])
for (const iterator of arr.values()) {   
  console.log(iterator); // 1 2 3 a b
}

//Map
let arr = new Map([['a',1],['b',2],[false,3],[true,4]])
arr.set(1,5)

for (const iterator of arr.values()) {
  console.log(iterator); // 1 2 3 4 5
} 
  1. keys():返回键值对中key的值,不改变原数组
// 数组
let arr1 = [1,2,3,4,5]
let arr2 = arr1.keys()

for (const iterator of arr2) {
  console.log(iterator);  // 0 1 2 3 4 
}

//Set
let arr = new Set([1,2,3,'a','b'])
for (const iterator of arr.keys()) {   
  console.log(iterator); // 1 2 3 a b
}

//Map
let arr = new Map([['a',1],['b',2],[false,3],[true,4]])
arr.set(1,5)

for (const iterator of arr.keys()) {
  console.log(iterator); // a  b  false  true  1
} 
  1. includes(searchElement, fromIndex):判断数组中是否存在该元素,可以替换ES5的indexOf()方法, indexOf()判断NaN会出现错误
let arr = [1,2,3,4,5,6,7,8,9,NaN]

let a = arr.indexOf(NaN) // -1 在判断NaN会出现错误
let aa = arr.indexOf(4) // 3
let b = arr.includes(NaN) // true includes只能判断是否存在,具体位置不能判断
let bb = arr.includes(4) // true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值