1、将两个数组组合成一个升序数组(concat、sort)
(1)concat() 方法用于连接两个或多个数组,或者是具体的值
(2)sort() 方法用于对数组的元素进行排序,sort调用的是一个函数,函数可以传入两个变量(a,b),其返回值如下
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
var a = [1, 2, 6]
var b = [4, 2, 7]
var c = a.concat(b)
console.log(c) // [1, 2, 6, 4, 2, 7]
function aruduce (x, y) {
return x - y
}
c.sort(aruduce) // [1, 2, 2, 4, 6, 7]
// 排序简洁版本
[1,2,3,4].sort((a, b) => a - b); // [1, 2,3,4],默认是升序
[1,2,3,4].sort((a, b) => b - a); // [4,3,2,1] 降序
2、数组去重
(1)方式1:filter + indexOf()
var res = [1,2,3,3,4,5,5,6,6,7,7,8]
var ad = res.filter((item, index, self) => {
return self.indexOf(item) === index
})
console.log(ad) // [1, 2, 3, 4, 5, 6, 7, 8]
(2)方式2:new Set方式
var arr = [ 'a', 'a' ,'b', 'c', 'abc']
var result = [ ...new Set(arr) ]
console.log(result)
VM187:3 (4) ["a", "b", "c", "abc"]
(3)方式3:filter+include
// 两个数组去重
let a=[1,2,3]
let b=[4,2,1]
let c=a.filter(item => b.includes( item))
console. log(c)
(4)多个数组去重
// 多个数组去重
let a=[1,2,3]
let b=[3,4,5]
let c=[3,5,9]
let e=[]
e.push(a)
e.push(b)
e.push(c)
let newData = e. reduce((i,j)=> i.filter(item => j.includes(item))
console.log(newData) // [4]
3、求两个数组的交集
(1)indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置
var a = [1,2,3,4,5,6,7,7,7,7]
var b = [1,0,9,8,7,6]
var c = []
a.forEach((item,index) => {
if (b.indexOf(item) !== -1) {
c.push(item)
}
})
console.log(c) // [1, 6, 7, 7, 7, 7]
4、求最大值最小值
(可以把this换成null,求最小值的时候把max换成min)
// 方法一
var one = [1,2,3,4,5,6,7,2,1,4]
Math.max.apply(this, one) // 7
// 方法二
var one = [1,2,3,4,5,6,7,2,1,4]
Math.max(...one) // 7
5、数组的合并
// 方法一
var a = [1,1,2,4]
var b = [5,6,7]
b.map(item => {
console.log(item)
a.push(item)
})
console.log(a) // [1, 1, 2, 4, 5, 6, 7]
// 方法二
[1,2,3,4].concat([5,6]) //[1,2,3,4,5,6]
// 方法三
[...[1,2,3,4],...[4,5]] //[1,2,3,4,5,6]
6、判断是否包含指
其中includes(),find(),findIndex()是ES6的api
// 1 includes 存在的话返回true;不包含返回false
[1,2,3].includes(4) // false
// 2 indexOf 存在的话返回索引;不存在返回-1
[1,2,3].indexOf(4) // -1
// 3 find 存在的话返回具体的值;不存在返回undefined
[1, 2, 3].find((item)=>{return item===3}) // 3
// 4 findIndex 存在的话返回对应的索引;不存在返回-1
[1, 2, 3].findIndex((item)=>{return item===3}) // 2
7、三个数组求交集
var ArrFun = function (array1,array2,array3){
let newArr = []
// 求交集只需要遍历一个数组就行
array1.forEach((element)=>{
// 找到返回数据,找不到返回undefined
let newAr2 = array2.find(item => item === element)
let newAr3 = array3.find(item => item === element)
if(newAr2 && newAr3) newArr.push(element)
})
return newArr
}
ArrFun([1,5,3,4,2],[1,2,5,7,9],[1,3,4,5,8]) // [1,5]
8、最准确的类型的判断方法
Object.prototype.toString.call()
借鉴作者:JavaScript数组的使用小结(详细还是去看MDN) - 掘金
借鉴作者:JS之数组的几个不low操作 - 掘金