【发布时间】:2017-10-04 19:47:21
【问题描述】:
我正在创建一个函数,该函数将接受两个参数,每个参数都是数组,并返回两个数组之间匹配值的单独数组。
我做了两个版本的函数,
- 默认遍历
for中的第一个参数 循环,并使用.includes()检查第二个参数的匹配值
例如:
var matches = [];
for (let i = 0, len = array1.length; i < len; i++) {
var a = array1[i];
if (array2.includes(a)) {
matches.push(a)
}
- 测量并比较两个数组的长度,并选择
在
for循环中迭代的较短数组
例如:
if (array1.length <= array2.length) {
var itArr = array1;
var checkArr = array2 }
else { var itArr = array2
var checkArr = array1 };
var matches = [];
for (let i = 0, len = itArr.length; i < len; i++) {
var a = itArr[i];
if (checkArr.includes(a)) {
matches.push(a)
}
我的问题是,这是否真的提高了性能,或者没有区别,或者损害了性能(通过添加更多的变量定义、计算等)?
【问题讨论】:
-
加快此过程的一种方法是将其中一个数组制作成关联数组或集合,因为它们使用称为哈希映射的东西。然后遍历另一个以检查是否加入。
标签: javascript arrays performance for-loop