看到 vue-router
中有下面这么一段代码:
// ensure wildcard routes are always at the end
for (let i = 0, l = pathList.length; i < l; i++) {
if (pathList[i] === '*') {
pathList.push(pathList.splice(i, 1)[0])
l--
i--
}
}
我感觉边循环数组边修改数组有点怪异。于是进行了如下修改。
// ensure wildcard routes are always at the end
const normalPathList = pathList.filter(it => it !== '*')
const wildcardPathList = pathList.filter(it => it === '*')
pathList.length = 0
pathList.push(...normalPathList)
pathList.push(...wildcardPathList)
然后提了个 Pull Request
意外被拒绝了:
Thanks for your concern! However, this solution goes through the original array multiple times and create multiple arrays
其实呢也就增加了两三次的循环,但是对对于一个前端 pathList 数组来说,数量一般也就 10 多个,或者 100 以内。 多循环一两次没什么大问题。 如果是我的项目的话,我倾向于可读性更好的代码。
不过对于 JavaScript 来说,其实数组并不是数组,跟 Java List 也不一样,而是一个使用索引作为 key 的特殊的对象。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.