let arr = [1,2]
/*
后插入
改变原数组
返回数组长度
*/
let a= arr.push(3)
console.log('push',arr,a) //[1、2、3] 3
/*
前插入
改变原数组
返回数组长度
*/
let b= arr.unshift(0)
console.log('unshift',arr,b)//[0、1、2、3] 4
/*
前删除1个
改变原数组
返回删除数据
*/
let c= arr.shift()
console.log('shift',arr,c)//[1、2、3] 0
/*
后删除1个
改变原数组
返回删除数据
*/
let d= arr.pop()
console.log('pop',arr,d)//[1、2] 3
/*
将数组元素转换为字符串
不改变原数组
()传递分隔符 默认值 ,
*/
let sJtr =arr.join(',')
console.log('join',arr,sJtr)//1,2
/*
将数组元素转换为字符串
不改变原数组
和join不同的是分隔符是固定的 , 而join可以选择分隔符
*/
let sStr =arr.toString()
console.log('toString',arr,sStr)//1,2
/*
截取满足条件的数据
不改变原数组
返回截取的数据
()内的第一个参数是必须的,第二个是非必须的
截取的数据范围是包含第一个参数不包含第二个参数
*/
let brr = arr.slice(0,1)
console.log('slice',arr,brr)
/*
向数组中添加或者删除项目
会改变原数组
返回删除的项目
()内有多个参数 第一个是开始位置必须的 第二个是要删除的项目数量必须的,设置为0则不删除数据 后面的参数为添加的数据可选
*/
let spArr = arr.splice(1,1) // [1] [2]
console.log('splice',arr,spArr)
let newArr = arr.splice(1,0,2,3) //[1,2,3] []
console.log('splice',arr,newArr)
/*
数组的拼接
不改变原数组
返回拼接后的新数组
()内可以传递多个数组
*/
let cArr = [5,4]
let concatArr = arr.concat(cArr)
console.log('concat',arr,concatArr)//[1,2,3] [1,2,3,4,5]
/*
数组的排序
不改变原数组
()内传递排序规则 非必填 规则必须是函数
*/
function sortNumber(a,b){
return b-a
}
arr.sort(sortNumber)//数组排序
console.log('sort',arr)//[3,2,1]
/*
数组前后位置互换
不改变原数组
()内不传递参数
*/
arr.reverse()//数组颠倒
console.log('reverse',arr)
// 以下是数组迭代方法
/*
循环数组中的每一项
*/
arr.forEach(item=>{
console.log('forEach',item)//[1,2,3]
})
/*
循环数组中每一项
不改变原数组
数组中没有值的元素不会执行自定义函数
创建新数组
*/
function aa(value, index, array) {
return value * 2;
}
arr.map(item=>{
console.log(item)//[1,2,3]
})
let mapArr = arr.map(aa)
console.log('map',arr,mapArr)//[1,2,3] [2,4,6]
/*
按条件筛选
不改变元素组
返回满足条件的新数组
*/
let n = arr.filter(item=>{
return item == 1
})
console.log('filter',arr,n)//[1,2,3] [1]
console.log(Math.max(...arr)) //3
// apply的用法
console.log(Math.max.apply(null,arr)) //3
console.log(Math.min(...arr)) //3
console.log(Math.min.apply(null,arr)) //3
/*
查找数组中满足条件的元素(从前向后查找)
不改变原数组
返回满足条件的第一个下标值,如果没有返回-1
()内可以传递两个参数 第一个必填查找的元素 第二个非必填从数组中第几位开始查找
*/
let Findex = arr.indexOf(2)
console.log('Findex',Findex) //1
/*
查找数组中满足条件的元素(从后向前查找)
不改变原数组
返回满足条件的第一个下标值,如果没有返回-1
()内可以传递两个参数 第一个必填查找的元素 第二个非必填从数组中第几位开始查找
*/
let Lindex = arr.lastIndexOf(3)
console.log('Lindex',Lindex) //2
/*
对数组中的所有元素进行判断,是否所有的元素都满足判断条件
不改变原数组
返回一个布尔值
()内传递的是一个函数
*/
function greater(value, index, array){
return value > 1;
}
let eFlag = arr.every(greater)
let eFlag1 = arr.every(i =>{return i>1})
console.log('every',eFlag,eFlag1) //false false
/*
对数组中的所有元素进行判断,是否存在一个满足条件判断的元素
不改变原数组
返回一个布尔值
()内传递的是一个函数
*/
let sFlag = arr.some(greater)
let sFlag1 = arr.some(i =>{return i>1})
console.log('some',sFlag,sFlag1) //true true
/*
*/
// arr.reduce()
// arr.reduceRight()
// // es6新增实用方法
/*
扩展运算符
不改变原数组
返回新数组
注意:只有函数调用时,扩展运算符才可以放在圆括号中,否则会报错。
优点太多,待完善
*/
let dArr = [0,...arr]
console.log(arr,dArr)//[1,2,3] [0,1,2,3]
// console.log((...[1,2])) //Uncaught SyntaxError: Unexpected number
/*
将一组数值转换为数组
返回一个新数组
*/
let ofArr = Array.of(1,2,3,4)
console.log(ofArr)//[1,2,3,4]
/*
查找数组中满足条件的第一个元素
不改变原数组
*/
let fNumber = arr.find(greater)
console.log('find',fNumber)//2
/*
查找数组中满足条件的第一个元素的下标值
不改变原数组
*/
let findex = arr.findIndex(greater)
console.log('findIndex',findex)//1