//reduce对数组套对象去重
let arr = [
{ id: 0, name: "张三" },
{ id: 1, name: "李四" },
{ id: 2, name: "王五" },
{ id: 3, name: "赵六" },
{ id: 1, name: "孙七" },
{ id: 2, name: "周八" },
{ id: 2, name: "吴九" },
{ id: 3, name: "郑十" },
];
function fun(arr){
let obj = {}
arr = arr.reduce((newArr,next)=>{
obj[next.id]?'':obj[next.id] = true&&newArr.push(obj)
return newArr
},[])
return arr
}
console.log(fun(arr));
//reduce对数组求和
const prices = [5.99, 2.99, 3.99, 11.59]
function sum(prices){
const sumNum = prices.reduce((preVal,nextVal)=>{
return preVal +nextVal
},0)
return sumNum
}
console.log(sum(prices))
//reduce将二维数组转成一维数组 也可以支持多维转一维
var rows = [[2, 3, 5], [1, 2, 4], [8, 5, 5]]
function twotoone(rows){
const newA = rows.reduce((pre,next)=>{
return pre.concat(next)
})
return newA
}
console.log(twotoone(rows))
//数组转对象 元素和出现的次数
const apples = ['green', 'red', 'red', 'yellow', 'red', 'yellow', 'green', 'green'];
function arrtoobj(apples){
const lastRes = apples.reduce((pre,next)=>{
pre[next]>=1? pre[next]++ :pre[next] = 1
return pre
},{})
return lastRes
}
console.log(arrtoobj(apples))
//手写深拷贝
const deepCopy = (obj)=>{
const newObj = obj.constructor === Array?[]:{};
for(let key in obj){
if(obj.hasOwnProperty(key)){
if(obj[key]&&typeof obj[key] === 'object'){
newObj[key] = deepCopy(obj[key])
}
else{
newObj[key] = obj[key]
}
}
}
return newObj
}
}
}
reduce用法
最新推荐文章于 2024-06-28 16:20:01 发布