刚刚看到有人写了这个:
let id = 1;
...
let employee = null;
for (const e of employees) {
if (e.id === id) {
employee = e;
break;
}
}
似乎写起来太复杂了:
let id = 1;
...
let employee = employees.find(e => e.id === id);
使用带有break的循环与find()有什么好处?
幕后的find()实现是什么?
解决方法:
性能比较
.find()比… break更快.
检查this link以获取测试结果. for … break比.find()慢30%
.find()源代码可以找到here
较旧的浏览器(例如IE11及更低版本)不支持.find().您需要改用polyfill.
意见
由于复杂程度和所使用的内部算法,.find()更好.使用for … break,您将始终进行线性搜索,这意味着n * n次重复.数组越大,功能越慢.