一、总结一下我做项目经常用到的一些方法。
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"。 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) | 必需。用于执行每个数组元素的函数。 函数参数:
|
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