38.JS数组常用api

本文详细介绍了JavaScript中常用的数组方法,如pop()、push()、unshift()、shift()等基本操作,以及map()、filter()、every()、some()等高级操作,展示了如何使用这些方法处理和操作数组。
摘要由CSDN通过智能技术生成

1.pop()

pop() 方法不接收参数,用于删除并返回数组的最后一个元素。该方法会改变原始数组

let arr = [1,2,3,[4,5,6]]
console.log(arr.pop());//[4,5,6]
console.log(arr);//[1,2,3]

2.push()

该方法接收一个参数,将参数放入数组末尾,并返回新数组长度。改变原始数组

let arr = [1,2,3,[4,5,6]]
console.log(arr.push([7,8,9]));//5
console.log(arr);//[1, 2, 3, Array(3), Array(3)]

3.unshift()

该方法接收一个参数,将参数放入数组开头,并返回新数组长度。改变原始数组

let arr = [1,2,3,[4,5,6]]
console.log(arr.unshift([7,8,9]));//5
console.log(arr);//[Array(3), 1, 2, 3, Array(3)]

4.shift()

该方法不接收参数,将数组的第一个元素删除并返回。改变原始数组

let arr = [1,2,3,[4,5,6]]
console.log(arr.shift());//1
console.log(arr);// [2, 3, Array(3)]

5.isArray()

该方法接收一个参数,用于判断参数是否是数组,对于判断一个对象是否是数组,还有其他方法,也在本专栏中 

let arr = [1,2,3,[4,5,6]]
console.log(Array.isArray(arr));//true
console.log(Array.isArray(1));//false
console.log(Array.isArray({name:'srd'}));//false

6.map()

该方法接收一个函数,函数接收三个参数,

currentValue表示当前值,

index表示当前下标,

arr表示当前元素属于的数组对象

方法返回一个新的数组,记得函数一定要return,不会改变原始数组

let arr = [1,2,3,[4,5,6]]
let newArr = arr.map((currentValue,index,arr)=>{
    console.log(currentValue,index,arr);
    return currentValue + 1
})
console.log(arr);
console.log(newArr);

// 1 0 (4) [1, 2, 3, Array(3)]
// 2 1 (4) [1, 2, 3, Array(3)]
// 3 2 (4) [1, 2, 3, Array(3)]
// (3) [4, 5, 6] 3 (4) [1, 2, 3, Array(3)]

//因为arr中最后一个元素是数组,所以 + 1 会隐式类型转换,将数组转化为字符串
// (4) [1, 2, 3, Array(3)]
// (4) [2, 3, 4, '4,5,61']

 7.filter()

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

filter() 不会对空数组进行检测。

filter() 不会改变原始数组。

参数:currentValue当前元素的值

​ index当前元素的索引值

​ arr当前元素属于的数组对象

let arr = [1,2,3,[4,5,6]]
let newArr = arr.filter((currentValue,index,arr)=>{
    return !Array.isArray(currentValue)
})
console.log(arr);//[1,2,3,[4,5,6]]
console.log(newArr);//[1,2,3]

8.every()

every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。

every() 方法使用指定函数检测数组中的所有元素:

如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。
every() 不会对空数组进行检测。

every() 不会改变原始数组。

参数:currentValue当前元素的值

​ index当前元素的索引值

​ arr当前元素属于的数组对象

let arr = [1,2,3,[4,5,6]]
let newArr = arr.every((currentValue,index,arr)=>{
    return currentValue > 0
})
console.log(arr);//[1,2,3,[4,5,6]]
console.log(newArr);//false

 9.some()

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。

some() 方法会依次执行数组的每个元素:

如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
some() 不会对空数组进行检测。

some() 不会改变原始数组。

参数:currentValue当前元素的值

​ index当前元素的索引值

​ arr当前元素属于的数组对象

let arr = [1,2,3,[4,5,6]]
let newArr = arr.some((currentValue,index,arr)=>{
    return currentValue > 0
})
console.log(arr);//[1,2,3,[4,5,6]]
console.log(newArr);//true

10.splice()

splice() 方法用于添加或删除数组中的元素。

这种方法会改变原始数组。

如果仅删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。

参数:index 必须,规定从何处添加/删除元素。该参数是开始插入和删除的数组元素的下标,必须是数字

​ howmany 可选,规定应该删除多少元素。必须是数字,但可以是“0”,如果为规定此参数,则删除从index开始到原数组结 尾的所有元素。

​ item…itemX 可选,要添加到数组的新元素

let arr = [1,2,3,[4,5,6]]

// let newArr = arr.splice(0,2);
// console.log(newArr);//[1,2]
// console.log(arr);//[3,[4,5,6]]

// let newArr = arr.splice(5,0,7,8,9)
// console.log(newArr);//[]
// console.log(arr);//[1, 2, 3, Array(3), 7, 8, 9]



11.slice()

slice() 方法可从已有的数组中返回选定的元素。

slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

slice() 方法不会改变原始数组。

参数:start 规定从何处开始选取。如果该参数为负数,则表示从原数组的倒数第几个元素开始提取,slice(-2) 表示提取原数组中 的倒数第二个元素到最后一个元素(包含最后一个元素)。

​ end() 规定从何处结束选取。没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取

let arr = [1,2,3,[4,5,6]]

let newArr = arr.slice(2,5)

console.log(newArr);//[3,[4,5,6]]
console.log(arr);//[1,2,3,[4,5,6]]

12. indexOf()

indexOf() 方法可返回某个指定的字符串值(或元素)在字符串(数组)中首次出现的位置。

如果没有找到匹配的字符串则返回 -1。

indexOf() 方法区分大小写。

参数:value 必须,规定需要检查的字符串值

​ start 可选,规定在自负串开始检索的位置,如果省略,则将从字符串的首字符开始检索

let arr = [1,2,3,[4,5,6],1]

let index = arr.indexOf(1)
console.log(index);//0
console.log(arr.indexOf(1,2));//4
console.log(arr.indexOf(0));//-1

let str = 'srd'
console.log(str.indexOf('s'));//0

13.includes

includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。

参数:searchElement 必须,需要查找的元素值

​ fromIndex 从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默 认为 0。

let arr = [1,2,3,[4,5,6]]

console.log(arr.includes(1));//true
console.log(arr.includes(1,1));//false

14.concat()

方法接收一个数组参数,用于连接数组,返回一个新数组,不会改变原始数组

let arr = [1,2,3,[4,5,6]]

let arr2 = [7,8,9]
console.log(arr.concat(arr2));//[1, 2, 3, Array(3), 7, 8, 9]

15.join()

方法接收一个字符串,若不是字符串,则转化为字符串,返回一个字符串,不改变原数组

let arr = [1,2,3,[4,5,6]]
console.log(arr);//[1, 2, 3, Array(3)]
console.log(arr.join('---'));//1---2---3---4,5,6
console.log(arr.join(1));//1121314,5,6

16.forEach

方法接收一个函数,函数有两个参数,value表示当前的值,index表示当前的下标,注意break和return不能跳出forEach,只有抛出错误才能终止循环

let arr = [1,2,3,[4,5,6]]
arr.forEach((value,index)=>{
    console.log(value,index);
    throw new Error('错误')
})

//1 0
// test.js:4  Uncaught Error: 错误
// at test.js:4:11
// at Array.forEach (<anonymous>)
// at test.js:2:5

17.sort()

方法可接受一个函数,函数有两个参数,可决定排序规则,会改变原始数组

let arr = [1,2,3,4,[8,9]]
console.log(arr.sort((a,b)=>b - a));//[4, 3, 2, 1, Array(2)]
console.log(arr);//[4, 3, 2, 1, Array(2)]
console.log(arr.sort((a,b)=>a - b));//[1, 2, 3, 4, Array(2)]

18.reverse()

方法用于将反序数组元素的顺序

19.find()

find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。

find() 方法为数组中的每个元素都调用一次函数执行:

当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 undefined
find() 对于空数组,函数是不会执行的。

find() 并没有改变数组的原始值。

let arr = [1,2,3,4,[8,9],[10,11]]
console.log(arr.find((item) =>{
    return Array.isArray(item)
}));//[8,9]

20.findIndex

该方法于find相似,只是返回的是下标,而不是值

21.fill()

fill() 方法用于将一个固定值替换数组的元素。

参数:value 必须,填充的值

​ start 可选,开始填充的位置,默认为0

​ end 可选,停止填充的位置,默认为array.length

let arr = [1,2,3,4,[8,9],[10,11]]
let newArr = arr.fill(0)
console.log(arr);
console.log(newArr);
console.log(new Array(3).fill(1));
console.log(arr.fill(3,2,4));

// [0, 0, 0, 0, 0, 0]
// [0, 0, 0, 0, 0, 0]
// [1, 1, 1]
// [0, 0, 3, 3, 0, 0]
let arr = [1,2,3,4,[8,9],[10,11]]

//要用of不能用in
for(let index of arr.keys()){
    console.log(index);//0,1,2,3,4,5
}
for(let value of arr.values()){
    console.log(value);//1,2,3,4,[8,9],[10,11]
}

for(let k of arr.entries()){
    console.log(k);
// [0, 1]
// [1, 2]
// [2, 3]
// [3, 4]
// [4, Array(2)]
// [5, Array(2)]
}

22.reduce()

方法不改变原数组

参数一: callback 函数(执行数组中每个值的函数,包含四个参数):

    prev 必需 (上一次调用回调返回的值,或者是提供的初始值(initialValue))
    cur 必需(数组中当前被处理的元素)
    index 可选 (当前元素在数组中的索引)
    arr 可选 (调用 reduce 的数组)
参数二:initialValue 可选 (表示初始值,作为第一次调用 callback 的第一个参数。)提供初始值,cur 从数组第一项开始,若不提供初始值,则 cur 从第二项开始执行,对应的第一次 prev 是数组第一项的值

// arr.reduce(callback,[initialValue])
 
array.reduce((prev, cur, index, arr)=> {
    /***/
}, initialValue)

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值