请问js数组对象如何遍历和取值?

服务端有个多维数组,以json格式返回前台,请问如何取值?应该怎么遍历?

前端数据大致如下:

[
    [
        {id:1, user_id:10, nick_name:"昵称A", content:"回复内容"}, //评论1
        [
            {id:2, user_id:12, nick_name:"昵称c", content:"回复内容"}, //对评论1的评论
            {id:3, user_id:20, nick_name:"昵称x", content:"回复内容"}, //对评论1的评论
            //...多个
        ]
    ],
    [
        {id:4, user_id:24, nick_name:"昵称B", content:"回复内容"}, //评论2
        [
            {id:5, user_id:12, nick_name:"昵称c", content:"回复内容"}, //对评论2的评论
            {id:6, user_id:23, nick_name:"昵称y", content:"回复内容"}, //对评论2的评论
            //...多个
        ]
    ],
    //.....  评论3 4 5 。。。
]

图片描述

图片描述

阅读 5.8k
3 个回答
let arr = [
    [
        {id:1, user_id:10, nick_name:"昵称A", content:"回复内容"}, //评论1
        [
            {id:2, user_id:12, nick_name:"昵称c", content:"回复内容"}, //对评论1的评论
            {id:3, user_id:20, nick_name:"昵称x", content:"回复内容"}, //对评论1的评论
            //...多个
        ]
    ],
    [
        {id:4, user_id:24, nick_name:"昵称B", content:"回复内容"}, //评论2
        [
            {id:5, user_id:12, nick_name:"昵称c", content:"回复内容"}, //对评论2的评论
            {id:6, user_id:23, nick_name:"昵称y", content:"回复内容"}, //对评论2的评论
            //...多个
        ]
    ],
    //.....  评论3 4 5 。。。
]

let arr2 = [];
for(let v of arr) {
    for(let key of v) {
        if(key.length == undefined){
            arr2.push(key)
        }else if(key.length != undefined){
            for(i of key) {
                arr2.push(i)
            }
        }
        
    }
}
console.log(arr2)

图片描述

这个数据遍历出来了 你也用不到 找不到对应关系 我是闲的等下班...

让后端改返回的数据去吧,不要纠结这么烂的数据结构要怎么遍历了,首先要确定用正确的数据结构再去考虑遍历
[
{'评论':{XX},'跟评':[{XX},{XX},{XX}]},
{'评论':{XX},'跟评':[{XX},{XX},{XX}]},
{'评论':{XX},'跟评':[{XX},{XX},{XX}]},
]
或者 直接返回每一条评论
[
{id:1,pid:0,content:'XXX'}
{id:2,pid:1,content:'XXX'}
{id:4,pid:2,content:'XXX'}
{id:3,pid:2,content:'XXX'}
]
根据pid找父类评论,然后组合排序,

是不是都是两层的结构?如果是的话就直接两层循环就可以了
如果不是的话,建一课树,用深度优先遍历

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题