Array对象
| concat() | 连接两个或更多的数组,并返回结果。 |
| join() | 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 |
| pop() | 删除并返回数组的最后一个元素 |
| push() | 向数组的末尾添加一个或更多元素,并返回新的长度。 |
| reverse() | 颠倒数组中元素的顺序。 |
| shift() | 删除并返回数组的第一个元素 |
| slice() | 从某个已有的数组返回选定的元素 |
| sort() | 对数组的元素进行排序 |
| splice() | 删除元素,并向数组添加新元素。 |
| toSource() | 返回该对象的源代码。 |
| toString() | 把数组转换为字符串,并返回结果。 |
| toLocaleString() | 把数组转换为本地数组,并返回结果。 |
| unshift() | 向数组的开头添加一个或更多元素,并返回新的长度。 |
| valueOf() | 返回数组对象的原始值 |
函数方法
1,forEach() (es5)
forEach,for in , for,for of的区别
let arr = [1,2,3,4,6];
arr.w = 100 //数组的私有属性
arr.forEach((item)=>{ //不能return,必会执行完。
console.log(item)
})
for(let val of arr){ //支持return 并且是值of数组(不能遍历对象)
console.log(val)
}
for(let key in arr){//key 会变成字符串,包括数据的私有属性也可以打印出来
console.log( typeof key)
}2,filter() 过滤
//filter 过滤) 是否操作原数组:不会 ; 这个方法返回结果:过滤后的新数组 ; 回调函数的返回结果:true,这一项放到新数组
let aaa = arr.filter(item=>{
return item<5
})
console.log(aaa)3,map() 映射
//map 映射 降原有的数组映射成一个新数组 )不操作原数组;返回新数组;回调函数中返回什么就是什么
// 要映射一个结果为:<li>1</li><li>2</li><li>3</li><li>4</li><li>6</li>
let map = arr.map(item=>{
return `<li>${item}</li>` //``是es6中的模板字符串,遇到变量用${}取值
})
console.log(map.join(''))4,some()
//some)同find一样只不过返回的不是找到的那一项,返回的是true;也是找到后停止,找不到就是false5,every()
//every)找到false后停止返回false;6,reduce()
// reduce 收敛 :4个参数,返回的是叠加后的结果,原数组不变。回调函数返回的结果:
//prev代表的是数组的第一项,next是数组的第二项
//第二次的prev是undefined,next是数组的第三项
let sum1 = arr.reduce(function (prev,next,index,item) {
console.log(arguments)
console.log(prev,next)
return 100 //本次的返回值会作为下一次的prev
})
console.log(sum1)
let sum2 = [{price:20,count:2},{price:20,count:3},{price:20,count:4}].reduce(function(prev,next){
//0+40
//40+60
//100+80
return prev+next.price*next.count
},0) //这可以指定第一次的prev是0,因为每次返回的是值所以这样最方便
console.log(sum2)7,includes()
//includes ) 返回是Boolean
let arr3 = [1,2,55,555]
console.log(arr3.includes(5))8,find()
//find ) 返回找到的那一项,不会改变数组,回调函数中返回true表示找到了,然后停止循环,找不到返回undefined;
let find = arr3.find(function (item,index) {
return item.toString().indexOf(5)>-1
})
console.log(find)