《从对象数组中取出某个属性相同的对象》由会员分享,可在线阅读,更多相关《从对象数组中取出某个属性相同的对象(2页珍藏版)》请在金锄头文库上搜索。
1、从对象数组中取出某个属性相同的对象输入:type:a,value:1,type:b,value:2,type:a,value:3,type:b,value:9目标:type:a,value:4,type:b,value:11思路一(较简便)functionsumByType(arr)letobj=arr.forEach(item)=consoleog(obj,item.type,item.value)if(objitem.type!=undefined)objitem.type+=item.valueelseobjitem.type=item.value)returnObject.keys(o
2、bj).map(key)=returntype:key,value:objkey)sumByType(type:a,value:1,type:b,value:2,type:a,value:3,type:b,value:9)思路二functionsumByType(arr)if(arr.1ength=0)returnarrif(!Array.isArray(arr)returnarrif(!arr.every(item)=item.type&item.value&typeofitem.type=string&item.type.constructor=String&typeofitem.valu
3、e=number&!isNaN(item.value)returnarrlettypes=arr.map(item)=returnitem.type)types=Array.from(newSet(types)returntypes.map(type)=letsametypeArr=arr.filter(item)=item.type=type)returnsametypeArr.reduce(pre,cur,index)=cur.value=pre.value+cur.valuereturncur,type:sametypeArr0.type,value:0)sumByType(type:a,value:1,type:b,value:2,type:a,value:3,type:b,value:9)思路二解析1先判断参数格式是否符合标准* 2.遍历数组得到所有的type并去重=获得types:a,b* 3遍历arr,把type相同的对象取出作为新的数组=获得sametypeArr:如type:a,value:1,type:a,value:3的数组* 4.遍历sametypeArr把value相加获得某个type的对象type:a,value:45返回这个对象组成新的数组,即所求结果