怎么优化这段代码 才能更优雅

list由module组成 module有一个id,module是个对象,有个字段叫entryPages ,是个数组,每个page 也有一个id.下面是我的实现,有没有更好的方法。

  //合并module和list
  concatModuleAndList(module, list) {
    if (list.some(el => el.id === module.id)) {
      list.forEach(el => el.id === module.id && (el.entryPages = [...el.entryPages, ...module.entryPages]))
    } else {
      list.unshift(module)
    }
    return list
  },
阅读 1.6k
2 个回答

感觉都差不多,不过最好就只循环1次。unshift如果可以用push代替的话,效率更高。

function merge (list, item) {
  let old = list.find(el => el.id === item.id)
  old ? old.entryPages = old.entryPages.concat(item.entryPages) : list.unshift(item)
}
concatModuleAndList(module, list) {
  const index = list.findIndex(el => el.id === module.id);
  if (~index) {
    list[index].entryPages = [...list[index].entryPages, ...module.entryPages];
  } else {
    list.unshift(module)
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题