es5:
判断哪个数组升序排列:
every()
var arr1 = [3,4,5,6,1]
console.log(arr1.every(function(item,i,arr){
return i<arr.length-1?arr[i]<arr[i+1]:true
}))
some():
forEach():修改原数组
arr1.forEach(function(elem,i,arr){
arr[i]*=2//正确
arr[i]=elem*2//正确
elem*=2//错误。数组各项大小没变。
//分析:当数组各项是原始类型时,elem是数组按值传递的。所以改elem,不影响数组。
//如果var arr1 = [{x:1},{x,2}{x,3}].此时,elem是按引用传递。修改elem.x,可以修改数组。elem.x*=2
})
map():返回新数组。原数组不动。
filter():过滤,原数组不变,返回新数组。
reduce():汇总
var arr = [2,3,1,5,4]
var start = 0
var sum = arr.reduce(function(prev,elem){//prev为每一次汇总后的值。
return prev+elem
},start)//start为起始基数。
console.log(sum)
复杂的汇总
var str = "hellooa"
var sum = str.split("").reduce(function(prev,elem){
if(prev[elem]==undefined){
prev[elem]=1
}else{
prev[elem]++
}
// console.log(prev)
return prev
},{})
console.log(sum)
结构:
数组结构:var a = 13,b = 14
;[a,b] = [b,a]
console.log(a,b)
对象结构
参数结构