二十五、前端之reduce

  • Post author:
  • Post category:其他


<!DOCTYPE html>

<html lang=”en”>

<head>

<meta charset=”UTF-8″>

<meta http-equiv=”X-UA-Compatible” content=”IE=edge”>

<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>

<title>reduce</title>

</head>

<body>

<script>

// 求和、求积

var arr = [1,2,3,4,5]

var sum = arr.reduce(function(prev,cur,index){

console.log(prev,cur,index);

return prev + cur

})

console.log(sum);

// prev 表示上一次调用回调函数的返回值或者初始值init 如果没有初始值则是数组第一项

// cur 表示当前正在处理的数组元素

// index 表示当前正在处理的数组元素的索引 若提供init 则索引为0 否则为1

// init 表示初始值

// 求数组中各项出现的次数 用对象表示出来

let names=[‘Alice’,’Bob’,’Tiff’,’Alice’]

// {‘Alice’:2,’Bob’:1,’Tiff’:1}

var obj = names.reduce(function(prev,cur,index){

console.log(prev,cur)

// 判断对象里是否有属性

if(cur in prev){

prev[cur]++

}else{

prev[cur] = 1

}

return prev

},{})

console.log(obj);

//    数组去重

var arr = [1,2,3,4,5,4,1]

// 第一步 需不需要init值

var newArr = arr.reduce(function(prev,cur,index){

// if(!prev.includes(cur)){

//     return prev.concat(cur)

// }else{

//     return prev

// }

if(!prev.includes(cur)){

return prev.concat(cur)

}else{

return prev

}

},[])

console.log(newArr);

// 二维数组转为一维数组

let arr1 = [[0,1],[2,3],[4,5]]

let newArr1 = arr1.reduce((pre,cur)=>{

return pre.concat(cur)

},[])

console.log(newArr1);

// 多维数组转为一维数组

let arr2 = [[0,1],[2,3],[4,5,[6,7]]]

const getArr = function(arr) {

return arr.reduce((pre,cur)=> pre.concat(Array.isArray(cur)? getArr(cur):cur)

,[])

}

console.log(getArr(arr2));

// 对象中属性求和

var result = [

{

subject:’math’,

score:10

},

{

subject:’chinese’,

score:10

},

{

subject:’english’,

score:10

}

]

var scoreSum = result.reduce(function(prev,cur,index){

return prev+cur.score

},0)

console.log(scoreSum);

</script>

</body>

</html>



版权声明:本文为weixin_44012634原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。