猿问
下载APP

萌新求教!js数组处理相同属性数据万分感谢

[1,1,2,2,3,4]到[[1,1],[2,2],3,4]
呼唤远方
浏览 51回答 2
2回答

素胚勾勒不出你

抛砖引玉constdata=[1,1,2,2,3,4];constresult=Object.values(data.reduce((obj,cur)=>{if(obj[cur]){Object.prototype.toString.call(obj[cur])==="[objectArray]"?obj[cur].push(cur):(obj[cur]=[obj[cur],cur]);}else{obj[cur]=cur;}returnobj;},{}));console.log(result);评论中的数据格式写法:constdata=[{name:"xiaoming",round:1},{name:"xiaowang",round:1},{name:"xiaoli",round:2},{name:"xiaowang",round:3}];constresult=Object.values(data.reduce((obj,cur)=>{if(obj[cur.round]){Object.prototype.toString.call(obj[cur.round])==="[objectArray]"?obj[cur.round].push(cur):(obj[cur.round]=[obj[cur.round],cur]);}else{obj[cur.round]=cur;}returnobj;},{}));console.log(result);

智慧大石

遍历即可,代码如下:functionaction(list){letresult=[];list.forEach(l=>{leti=result.findIndex(r=>{if(rinstanceofArray)returnr[0]===l;returnr===l;});if(i===-1)result.push(l);//不存在就加入elseif(result[i]instanceofArray)result[i].push(l);//存在数组就加入数组else//存在单个就改为数组result[i]=[result[i],l];});returnresult;}题主的要求不多,也不知道是否还有其他限制。原始数据是有序还是无序?原始数据的数组元素一定是数字吗?得到的结果是否需要排序?这些都不太清楚。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答