let arr1=[1,2,3,4,3];
let arr2=["one"];
let arr3;
// arr1.pop() // 删除数组最后一项元素,[1, 2, 3, 4]
// arr1.push(0) // 在数组末尾添加新元素,[1, 2, 3, 4, 3, 0]
// arr1.shift() // 删除数组第一项元素,[2, 3, 4, 3]
// arr1.unshift(0) // 在数组开始添加新元素, [0, 1, 2, 3, 4, 3]
// arr3=arr1.slice(1,2) // 截取数组,不改变原数组,slice(x,y),数组下标x < = 新数组 < 数组下标y,[2]
// arr1.splice(1,2) // splice(x,y," "),从数组下标x开始,删除y个元素,添加" ",[1, 4, 3]
// arr1.reverse() // 反序,[3, 4, 3, 2, 1]
// arr1.sort((a,b)=>a-b) // 排序,从小到大,[1, 2, 3, 3, 4],反之b-a
// arr3=arr1.concat(arr2) // 拼接数组,不改变原数组,[1, 2, 3, 4, 3, "one"]
// arr3=[...arr1,...arr2] // 拼接数组,不改变原数组,[1, 2, 3, 4, 3, "one"]
// console.log(arr1.indexOf(9)) // 查找元素下标,有则返回下标,若无则返回-1,返回第一个查找到的元素,-1
// console.log(arr1.lastIndexOf(3)) // 倒序查找元素下标,有则返回下标,若无则返回-1,返回第一个查找到的元素,4
let str=arr1.join('-') // 数组转string,以'-'隔开,1-2-3-4-3
arr3=str.split('-') // string转数组,以"-"分割,["1", "2", "3", "4", "3"]
基本方法
一、filter 过滤,只返回符合条件的item,组成一个新数组
let arr = [1, 2, 3, 4, 5, 6]
arr=arr.filter(item=>{
return item>2
})
console.log(arr) // arr=[3,4,5,6]
二、map 返回指定值,无返回值时返回undefined,组成一个新数组
let arr = [1, 2, 3, 4, 5, 6]
arr = arr.map(item => {
if(item>2){
return item
}
})
console.log(arr) // arr=[undefined, undefined, 3, 4, 5, 6]
三、some 返回布尔值,有一个符合要求的值时中止循环返回true,全部符合时返回false
let arr = [1, 2, 3, 4, 5, 6]
arr = arr.some(item => {
return item > 2
})
console.log(arr) // arr=true
四、every 返回布尔值,全部符合要求时返回true,否则false
let arr = [1, 2, 3, 4, 5, 6]
arr = arr.every(item => {
return item > 2
})
console.log(arr) // arr=false
五、find 返回符合要求的第一个item,全都不符合时返回undefined
let arr = [1, 2, 3, 4, 5, 6]
arr = arr.find(item => {
return item > 2
})
console.log(arr) // arr=3
活学活用
var a = [1, 2, 4]
var b = [3, 4]
//交集
var c = a.filter(function (v) { return b.indexOf(v) > -1 })
console.log(c) // [4]
//差集
var d = a.filter(function (v) { return b.indexOf(v) == -1 })
console.log(d) // [1,2]
//并集
var e = a.concat(b.filter(function (v) { return !(a.indexOf(v) > -1) }));
console.log(e) // [1,2,4,3]
//数组对象差集
var f = [{ id: 1, name: 'a' }, { id: 2, name: 'b' }]
var g = [{ id: 1, name: 'a' }]
var h = [...f].filter(x =>
[...g].every(y => y.id !== x.id)
)
console.log(g) // [{id:1,name:'a'}]
// 判断数组a中的每个元素是否都在数组b中存在
let i =
a.every(v => {
return b.includes(v)
})
console.log(i) // false