最全面的数组API集合

61 阅读2分钟

数组循环API

map():返回一个新的Array,每个元素为调用func的结果,遍历效率方面map要比foreach快

let arr = [1,2,3,4,5]
let result = arr.map((item, index)=>{
    return item * 2
})
// result [2,4,6,8,10]

forEach():破坏原数组,没有返回值,只是针对每个元素调用func

let arr = [1,2,3,4,5]
let result = []
arr.forEach((item, index)=>{
    result.push(item * 2) 
})
// result [2,4,6,8,10]

filter():返回符合func条件的元素数组

let arr = [1,2,3,4,5]
let result = arr.filter((item, index)=>{
    return item % 2 !== 0
})
// result [1,3,5]

find():返回第一个符合条件的元素对象

let arr = [1,2,3,4,5]
let result = arr.find((item, index)=>{
    return item % 2 === 0
})
// result 2

findIndex():返回第一个符合条件的元素对象的位置(索引)

let arr = [1,2,3,4,5]
let result = arr.findIndex((item, index)=>{
    return item % 2 === 0
})
// result 1

some():返回一个boolean,判断是否有元素是否符合func条件

let arr = [1,2,3,4,5]
let result = arr.some(item =>{
    return item > 3
})
// result true

every():返回一个boolean,判断每个元素是否符合func条件

let arr = [1,2,3,4,5]
let result = arr.every(item =>{
    return item > 3
})
// result false

reduce()/reduceRight(): 返回一个调用func的结果,reduce从左往右,reduceRight从右往左

// 求和
let arr = [1,2,3,4,5]
let result = arr.reduce((acc, curr)=>{
    return acc + curr
}, 0)

let resultRight = arr.reduce((acc, curr)=>{
    return acc + curr
}, 0)
// result [2,4,6,8,10]
// resultRight [2,4,6,8,10]

// 计数
let arr = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
let result = arr.reduce((acc, curr) =>{
    acc[curr] = (acc[curr] || 0) + 1
    return acc
}, {})
// result {apple: 3, banana: 2, orange: 1}
// * acc:传入和return的值,curr:循环对象的每一项

数组基础API

let arr = [1,2,3,4]
let arr1 = [5,6]
arr.push('a') // 向后追加 [1,2,3,4,'a']
arr.pop() // 向后删除 [1,2,3,4]
arr.unshift('b') // 向前追加['b',1,2,3,4]
arr.shift() // 向前删除 [1,2,3,4]

arr.join('-') // 数组转为字符串 '1-2-3-4'
arr.toString() // 数组转为字符串 '1234'
arr.toLocaleString() // 数组转为全小写字母的字符串 '1234'

arr.concat(arr1) // 数组合并 [1,2,3,4,5,6]

// a:填充项   b:起始索引(没有则全部替换)  c:结束索引(不包含结束项,没有则到最后一项)  
arr.fill(a,b,c)
arr.fill('w') // 全部替换 ['w','w','w','w']
arr.fill('w',1) // 部分替换到结尾 [1,'w','w','w']
arr.fill('w',1,3) // 部分替换,不包含结束索引 [1,'w','w',4]

arr.slice(a,b) // 返回命中项。a起始下标(不包含),b截取项数[非必填,默认到最后一项](包后不包前)
arr.slice(a) // 返回命中项。a起始下标(包含),到最后一位(包前不包后)
// splice —— a: 起始项(包含)   b:多少项   第三个参数开始往后:一次加入原数组
arr.splice(a,b,c,d,···)
arr.splice(1,2) // 类似删除 [1,4]
arr.splice(1,0,9,8) // 类似插入 [1,9,8,2,3,4]
arr.splice(1,2,9,8) // 类似替换 [1,9,8,4]

arr.indexOf(2) // 前往后查找并返回【第一个】索引  1
arr.lastIndexOf(2) // 后往前查找并返回【第一个】索引  2
arr.includes(2) // 判断数组是否包含该项,返回true\false