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;也是找到后停止,找不到就是false
5,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)