js for循环

想用for循环优化下面的写法

if (dataNode.level === 2) {
        dataNode.parent.data.disabled = false
   }
if (dataNode.level === 3) {
      dataNode.parent.data.disabled = false
      dataNode.parent.parent.data.disabled = false
   }
if (dataNode.level === 4) {
      dataNode.parent.data.disabled = false
      dataNode.parent.parent.data.disabled = false
      dataNode.parent.parent.parent.data.disabled = false
 }
阅读 1.8k
2 个回答
// for 版本
for (let i = 0, parent = dataNode.parent; i < dataNode.level - 1; i++) {
  parent.data.disabled = false
  parent = parent.parent
}

// reduce 版本
;[...Array(dataNode.level - 1)].reduce(({ parent }) => {
  parent.data.disabled = false
  return parent
}, dataNode)
function disableNode(node, level) {
  let parent = node.parent;
  while (--level) {
    parent.data.disabled = false;
    parent = parent.parent;
  }
}

disableNode(dataNode, level);

这个可以吗?如果你用递归或者循环,理论上也能处理这个问题

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