1、資料改造
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB1kMVRkT1kkeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyYDNwATNzATMwEDOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
根據評論的父評論id,将其放在父評論的child屬性内
方案一(for循環):
//放未回複别人的一級評論的數組
let arr1=[];
for(var i=0;i<arr.length;i++)
{
if(arr[i].parent_id==null)
{
arr1.push(arr[i]);
}
//給每個評論建立child屬性的數組
arr[i].child=[];
//根據comment_id和parent_id比對,相同則放進comment_id的child屬性裡
//此時已經完成資料的改造,每個評論都有自己的子評論,而該條評論又可能是其他評論的子評論
for(var j=0;j<arr.length;j++)
{
if(arr[i].comment_id==arr[j].parent_id)
{
// console.log( arr[i].child)
arr[i].child.push(arr[j]);
}
}
}
console.log(arr);
方式二(遞歸):
先找到未有parent_id的一級評論,然後根據這些評論的comment_id來周遊所有元素的
parent_id,找到這些評論的子評論,再根據子評論的comment_id來周遊所有元素的
parent_id進而找到子評論的子評論,這種方式能找到所有一級評論的子評論及其子評論的子評論
function fn(temp)
{ let arr1=[];
for(var i=0;i<arr.length;i++)
{
if(arr[i].parent_id==temp)
{
arr1.push(arr[i]);
arr[i].child=fn(arr[i].comment_id);
}
}
return arr1;
}
const res=fn(null);
如何找到二級評論以後的評論中贊數最多的,并根據贊數排序;
從改造後的資料中去到對應的二級評論,遞歸所有二級評論之後的評論,
全部放進一個數組,然後排序數組
總結:
第一種方式,所有評論都附加了child,循環結束後,還需要将為null的一級評論拿出來才是最終結果
第二種方式,隻會有為null的評論及其子評論有child(對象的引用),傳回值直接拿出來即可