js for in 如何改为.map写法

for (const i in data) {
        if (!data[i].children || data[i].children.length == 0) {
          data[i].pid = ""
          data[i].sort = i
        }
      }

以上代码如何转为.map的写法呢

阅读 2.2k
4 个回答
data.map((item, i) => {
    if (!item.children || item.children.length == 0) {
          item.pid = ""
          item.sort = i
   }
})
const newList = data.map((item, index) => {
    if (!item.children || item.children.length == 0) {
          item.pid = ""
          item.sort = index
        }
})
const data = [1, {children: 1}];

const newList = data.map((item, index) => {
  if (!item.children || item.children.length == 0) {
    return {
      ...item,
      pid: "",
      sort: index
    };
  } else {
    return item;
  }
});

console.log(newList);
[[object Object] {
  pid: "",
  sort: 0
}, [object Object] {
  children: 1
}]

应该用forEach而不是map:

data.forEach(({ children: c }, i) => c && c.length && Object.assign(c, { pid: '', sort: i }))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题