You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS打印数据显示[object object],如何单独输出列表与任务?

问题1 如何单独返回列表数据和任务数据

你输出[object Object]的核心原因是直接将存储对象的tasks数组传入document.write,JS 对对象执行默认的字符串转换时就会返回[object Object]。
另外你现有代码的遍历层级逻辑冗余,多套了一层不必要的遍历,不需要遍历整个用户对象,直接取用户的lists属性遍历即可,正确的遍历写法参考如下:

$.each(users, function (username, userData) {
  // 遍历当前用户下的所有待办列表
  $.each(userData.lists, function (listIdx, listItem) {
    // 这里就能单独拿到每个列表的所有数据,可按需取用
    const listData = {
      id: listItem.id,
      name: listItem.name
    }
    console.log('列表数据:', listData)
    document.write(`<div>列表名:${listItem.name}</div>`)

    // 遍历当前列表下的所有任务
    document.write(`<ul>对应任务:`)
    $.each(listItem.tasks, function (taskIdx, taskItem) {
      // 这里就能单独拿到每个任务的所有数据,可按需取用
      const taskData = {
        id: taskItem.id,
        content: taskItem.task
      }
      console.log('任务数据:', taskData)
      document.write(`<li>任务${taskItem.id}:${taskItem.task}</li>`)
    })
    document.write(`</ul>`)
  })
})

如果你只是需要把数据提取出来存为新数组,不需要输出到页面,可以这么写:

// 提取所有列表数据
const allLists = []
// 提取所有任务数据
const allTasks = []
$.each(users, function (username, userData) {
  $.each(userData.lists, function (listIdx, listItem) {
    allLists.push({id: listItem.id, name: listItem.name})
    $.each(listItem.tasks, function (taskIdx, taskItem) {
      allTasks.push({...taskItem, belongList: listItem.name})
    })
  })
})
console.log('所有列表:', allLists)
console.log('所有任务:', allTasks)

问题2 数据结构是否存在问题

你的数据结构没有错误,完全匹配「用户-待办列表-列表任务」的嵌套业务逻辑,属于合理的结构设计。
唯一可优化的点:当前lists数组里的id为0、1、3,存在跳号情况,如果你后续需要用id作为唯一标识做增删改查操作,建议保证id的全局唯一性,避免后续操作出现匹配冲突,这属于优化建议,不属于结构错误。

内容的提问来源于stack exchange,提问作者user17515150

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:36:07