js数组常用方法

findIndex

返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。

// 返回值:数组下标
// 是否改变原数组:否
var arr = [3,4,5,3,2,4,89,100,23]
var index = arr.findIndex(item => item == 100)
console.log(arr)    // [3, 4, 5, 3, 2, 4, 89, 100, 23]
console.log(index)  // 7

find

返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined

// 返回值:数组的某项
// 是否改变原数组:否
var arr = [4,5,2,7,5]
var item = arr.find(item => item>4)
console.log(arr)    // [4, 5, 2, 7, 5]
console.log(item)   // 5

indexOf 

返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1

// 返回值:数组下标
// 是否改变原数组:否
var arr = ['a','b','c']
var index = arr.indexOf('b')
console.log(arr)    // ['a','b','c']
console.log(index)  // 1

lastIndexOf

返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1

// 返回值:数组下标
// 是否改变原数组:否
var arr = [4,5,2,7,5]
var item = arr.lastIndexOf(5)
console.log(arr)    // [4, 5, 2, 7, 5]
console.log(item)   // 4

slice

返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变

// 返回值:新数组
// 是否改变原数组:否
var arr = [4,5,2,7,5]
var item = arr.slice(2,4)
console.log(arr)    // [4, 5, 2, 7, 5]
console.log(item)   // [2, 7]

keys

返回一个包含数组中每个索引键的Array Iterator对象。

// 返回值:Iterator对象
// 是否改变原数组:否
var arr = ['a','b','c']
var iterator = arr.keys()
for (const key of iterator) {
    console.log(key)    // 0,1,2
}
console.log(arr)    // ['a','b','c']

values

返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值

// 返回值:Iterator对象
// 是否改变原数组:否
var arr = ['a','b','c']
var iterator = arr.values()
for (const value of iterator) {
    console.log(value)    // a,b,c
}
console.log(arr)    // ['a','b','c']

forEach

对数组的每个元素执行一次给定的函数

// 返回值:undefined
// 是否改变原数组:否
var arr = ['a','b','c']
let res = arr.forEach(item=>{
    console.log(item)   // a,b,c
})
console.log(arr)    // ['a','b','c']
console.log(res)    // undefined

includes

用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false。

// 返回值:Boolean类型
// 是否改变原数组:否
var arr = ['a','b','c']
var index = arr.includes('b')
console.log(arr)    // ['a','b','c']
console.log(index)  // true

join

将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符

// 返回值:String类型
// 是否改变原数组:否
var arr = ['a','b','c']
var res = arr.join(',')
console.log(arr)    // ['a','b','c']
console.log(res)  // a,b,c

flat

会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

// 返回值:新数组
// 是否改变原数组:否
var arr = ['a','b','c',['d']]
var res = arr.flat('2')
console.log(arr)    // ['a','b','c',['d']]
console.log(res)  // ["a", "b", "c", "d"]

flatMap

首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 连着深度值为1的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些

// 返回值:新数组
// 是否改变原数组:否
var arr = [1, 2, 3, 4];
var newArr = arr.flatMap(x => [x * 2]);
console.log(arr)    // [1, 2, 3, 4]
console.log(newArr) // [2, 4, 6, 8]

map

创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。

// 返回值:新数组
// 是否改变原数组:否
var arr = [56,34,23,99,23,66,88];
var newArr = arr.map(item=>item*5)
console.log(arr)    // [56, 34, 23, 99, 23, 66, 88]
console.log(newArr) // [280, 170, 115, 495, 115, 330, 440]

some 

测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。

// 返回值:Boolean
// 是否改变原数组:否
var arr = [56,34,23,99,23,66,88];
var bool = arr.some(item=>item>80)
console.log(arr)    //  [56, 34, 23, 99, 23, 66, 88]
console.log(bool)   //  true

every 

测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。

// 返回值:Boolean
// 是否改变原数组:否
var arr = [56,34,23,99,23,66,88];
var bool = arr.every(item=>item>80)
console.log(arr)    //  [56, 34, 23, 99, 23, 66, 88]
console.log(bool)   //  false

reduce 

对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。

// 返回值:一般是基本数据类型
// 是否改变原数组:否
var arr = [56,34,23,99,23,66,88];
var sum = arr.reduce((sum,item)=>sum+item)
console.log(arr)    //  [56, 34, 23, 99, 23, 66, 88]
console.log(sum)   //  389

filter

创建一个新数组, 其包含通过所提供函数实现的测试的所有元素

// 返回值:新数组
// 是否改变原数组:否
var arr = [56,34,23,99,23,66,88];
var newArr = arr.filter(item=>item>50)
console.log(arr)    //  [56, 34, 23, 99, 23, 66, 88]
console.log(newArr)   //  [56, 99, 66, 88]

concat 

用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

// 返回值:合并后的新数组
// 是否改变原数组:否
var arr1 = [1,2];
var arr2 = [3,4];
var newArr = arr1.concat(arr2)
console.log(arr1)    //  [1, 2]
console.log(arr2)    //  [3, 4]
console.log(newArr)  //  [1, 2, 3, 4]

sort

用原地算法对数组的元素进行排序,并返回数组

// 返回值:新数组
// 是否改变原数组:是
var arr = [56,34,23,99,23,66,88];
var newArr = arr.sort()
console.log(arr)    // [23, 23, 34, 56, 66, 88, 99]
console.log(newArr) // [23, 23, 34, 56, 66, 88, 99]

reverse

将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组

// 返回值:新数组
// 是否改变原数组:是
var arr = ['a', 'b', 'c', 'd', 'e'];
var newArr = arr.reverse()
console.log(arr)    // ["e", "d", "c", "b", "a"]
console.log(newArr) // ["e", "d", "c", "b", "a"]

copyWithin

浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度

// 返回值:新数组
// 是否改变原数组:是
var arr = ['a', 'b', 'c', 'd', 'e'];
var newArr = arr.copyWithin(0,3,4)
console.log(arr)    //  ["d", "b", "c", "d", "e"]
console.log(newArr) // ["d", "b", "c", "d", "e"]

fill

用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引

// 返回值:新数组
// 是否改变原数组:是
var arr = [1, 2, 3, 4, 5, 6];
var newArr = arr.fill('a',0,3)
console.log(arr)    // ["a", "a", "a", 4, 5, 6]
console.log(newArr) // ["a", "a", "a", 4, 5, 6]

splice

通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。

// 返回值:被删除的数组
// 是否改变原数组:是
var arr = [56,34,23,99,23,66,88];
var newArr = arr.splice(1,3)
console.log(arr)    //  [56, 23, 66, 88]
console.log(newArr)   //  [34, 23, 99]

pop

从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。

// 返回值:被删除的元素
// 是否改变原数组:是
var arr = [1,2,3,4,5,100];
var el = arr.pop()
console.log(arr)    // [1, 2, 3, 4, 5]
console.log(el) // 100

push

将一个或多个元素添加到数组的末尾,并返回该数组的新长度

// 返回值:数组的长度
// 是否改变原数组:是
var arr = [1,2,3,4,5,100];
var length = arr.push('500')
console.log(arr)    // [1, 2, 3, 4, 5, 100, "500"]
console.log(length) // 7

shift

从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。

// 返回值:被删除的元素
// 是否改变原数组:是
var arr = [1,2,3,4,5,100];
var item = arr.shift()
console.log(arr)    // [2, 3, 4, 5, 100]
console.log(item) // 1

unshift

将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。

// 返回值:新数组的长度
// 是否改变原数组:是
var arr = [1,2,3,4,5,100];
var length = arr.unshift(-100,0)
console.log(arr)    // [-100, 0, 1, 2, 3, 4, 5, 100]
console.log(length) // 8

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值