数组的方法

一、总结一下我做项目经常用到的一些方法。

1.concat

数组的连接,也就是把两个数组连在一起,返回的新数组里面是两个数组的值。

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

2.join()

join()是将数组的元素转换为字符串,括号里面还可以传一个字符串,表示你想用什么字符将它们隔开。

let arr = ['I','love','you']
console.log(arr.join()) // I,love,you
console.log(arr.join(''))  // Iloveyou
console.log(arr.join('-')) // I-love-you
console.log(arr.join('、')) // I、love、you

3.push()

push()方法是往数组里面添加元素

let arr = [11,22,33]
arr.push(44)
console.log(arr)  // [11,22,33,44]

4.forEach()

forEach()是按顺序对每个元素执行。

let arr = [1,2,3,4]
arr.forEach((item,i,arr) => {
console.log(item,i,arr) // 元素值、下标、原数组
arr[i] = arr[i] * 2
})
console.log(arr)   // [2,4,6,8)

5.map()

跟forEach的用法相同,但是map()方法会返回一个新数组,而forEach()不会

6.reverse()

倒序

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

7.filter()

我理解为过滤,会返回一个数组。

let arr = [2,4,6,8,10]
arr.filter(v => v !== 2)
console.log(arr) // [4,6,8,10]

8.isArray()

判断一个对象是不是数组,返回布尔值,是数组就为true,不是就是false

let arr = [1,2,3]
let obj = {a: 1,b: 2}
Array.isArray(arr) // true
Array.isArray(obj) // false

9.some()

some() 方法检查数组中的任何元素是否满足。返回布尔值,有一个满足都为true,否则为false

let arr = [3,4,5,6,7,8]
// 判断数组里的有元素 > 4 
console.log(arr.some(v => v > 4)) // true
// 判断数组里的有元素 > 9
console.log(arr.some(v => v > 9)) // false
// 判断数组里的有元素 < 2
console.log(arr.some(v => v < 2)) // false

10.every()

every() 方法检查数组中的所有元素是否都满足。返回布尔值,都满足为true,有一个不满足为false。

let arr = [2,3,4,5,6,7,8]
// 判断数组里的每一个元素都大于6?
console.log(arr.every(v => v > 6)) // false
// 判断数组里的每一个元素都小于9?
console.log(arr.every(v => v < 9)) // true

11.for()

let person = [
    {name: '红红'},
    {name: '橙橙'},
    {name: '黄黄'},
    {name: '绿绿'}
]
let ageArr = [
    {name: '红红',age: 10 },
    {name: '橙橙',age: 14},
    {name: '黄黄',age: 19},
    {name: '绿绿',age: 20}
]

 // 1.单for()循环
for (let i = 0; i < person.length; i++) {
    person[i].sex = '女'
}
console.log(person)
// person = [
//    {name: '红红',sex: '女'},
//    {name: '橙橙',sex: '女'},
//    {name: '黄黄',sex: '女'},
//    {name: '绿绿',sex: '女'}
// ]

 // 2.双层for()循环
for (let i = 0; i < person.length; i ++) {
    for (let j = 0;j < ageArr.length; j++) {
       if(person[i].name === ageArr[j].name) person[i].age= ageArr[j].age
    }
}
console.log(person)
// person = [
//    {name: '红红',sex: '女',age: 10},
//    {name: '橙橙',sex: '女',age: 14},
//    {name: '黄黄',sex: '女',age: 19},
//    {name: '绿绿',sex: '女',age: 20}
// ]

12.sort()

从小到大排序

let arr = [3,1,0,9,4,7]
console.log(arr.sort()) // [0,1,3,4,7,9]

二、其他的一些我不常用的数组方法(这些感觉自己还没咋掌握)

上一次面试考到了这些方法,感觉一塌糊涂,是时候好好学习掌握一下了!!!

1.pop()

pop() 方法删除数组的最后一个元素,并返回该元素。

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

pop()方法会改变原数组。

2.shift()

shift() 方法删除数组的第一项。

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

shift()方法也会改变原数组。

3.fill(v,s,e)

使用固定值填充数组:v是必须的,是要填充的值,不传v数组里面默认用undefined填充,s是填充的开始位置,e是结束位置(不包括e),s,e可不传。

let arr = ['A','B','C','D','E']
arr.fill('G',0,1)
// ['G', 'B', 'C', 'D', 'E']

arr.fill('H',0)
// ['H', 'H', 'H', 'H', 'H']

arr.fill('L',1,1)
// ['H', 'H', 'H', 'H', 'H']

arr.fill('L',1,2)
// ['H', 'L', 'H', 'H', 'H']

arr.fill('M',3,4)
// ['H', 'L', 'H', 'M', 'H']

4.find()

find() 方法返回数组中通过满足条件的第一个元素的值,如果要找满足条件的最后一个值,可以用findLast()

let arr = [2,4,6,8,10]
arr.find(v => v > 8)
// 10
console.log(arr)
// [2, 4, 6, 8, 10]
console.log(arr.find(v => v > 6))
// 8

5.findIndex()

findIndex() 方法返回数组中满足条件的第一个元素的索引,如果要找满足条件的最后一个索引,可以用findLastIndex()

let arr = [2,4,6,8,10]
arr.findIndex(v => v > 4)
// 2
// [2, 4, 6, 8, 10]
arr.findLastIndex(v => v > 4)
// 4

6.toString()

返回一个包含所有数组值的字符串,以逗号分隔

let arr = ['aa','bb','cc']
arr.toString()
// 'aa,bb,cc'

7.splice()

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

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

语法:array.splice(index,howmany,item1,.....,itemX)

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

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

item1,.....,itemX :可选。要添加到数组的新元素

let arr = ['aa','bb','cc','dd','ee']
arr.splice()
// [] 不传就默认删除所有
arr = ['aa','bb','cc','dd','ee']
let arr2 =arr.splice(0,1,'A')
console.log(arr,arr2)
// ['A', 'bb', 'cc', 'dd', 'ee'] ['A']

arr = ['aa','bb','cc','dd','ee']
 arr3 = arr.splice(1,3,'B','C','D','E')  
console.log(arr,arr3) // arr 是返回删除且增加元素后的数组, arr3是返回删除元素组成的数组
// ['aa', 'B', 'C', 'D', 'E', 'ee'] (3) ['bb', 'cc', 'dd']

8.unshift()

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

注意: 该方法将改变数组的数目

let arr = ['A','B','C','D']
console.log(arr,arr.unshift('E','P','M'))
// ['E', 'P', 'M', 'A', 'B', 'C', 'D'] 7

9.valueOf()

valueOf() 方法返回数组。该方法是数组对象的默认方法。Array.valueOf() 将返回与 Array 相同的值。

let arr = [1,2,3,4,5]
let arr1 = arr.valueOf()
console.log(arr,arr1)
// [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]

10.reduce()

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。(求和吧)

reduce() 可以作为一个高阶函数,用于函数的 compose。

注意: reduce() 对于空数组是不会执行回调函数的。

语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

function(total,currentValue, index,arr)必需。用于执行每个数组元素的函数。
函数参数:
参数描述
total必需。初始值, 或者计算结束后的返回值。
currentValue必需。当前元素
currentIndex可选。当前元素的索引
arr可选。当前元素所属的数组对象。
let arr = [2,4,6,9,56]
undefined
undefined
arr.reduce((total,num)=> {
    // console.log(total,num)
    return total + num
},0)
// 77

11.indexOf()

indexOf() 方法在数组中搜索指定项,并返回其位置。感觉跟findIndex()用法差不多。

let arr = ['A','B','C','D','E']
console.log(arr.indexOf('E'))
// 4

此外,可以用  arr.indexOf('E') !== -1  来判断数组或字符串里面有没有包含某个东西,结果是布尔值

let arr = ['A','B','C','D','E']
console.log(arr.indexOf('E') !== -1)
// true

console.log(arr.indexOf('G') !== -1)
// false

let str = 'qqq,sss,www,eee'
console.log(str.indexOf('qqq') !== -1)
// true

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值