From 993e11f547e7555d62ccaefcaf5df660fde9707f Mon Sep 17 00:00:00 2001 From: Neo Date: Tue, 25 Jun 2019 17:17:48 +0800 Subject: [PATCH] fix tools function bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: 函数getIntersection里,因为循环次数取arr1和arr2长度的最小值,但遍历的是arr2数组,如果arr2的长度大于arr1,则arr2没有被完全遍历,得到的交集不准确 解决: 固定取arr1的长度为循环次数,遍历arr1,对每个元素判断arr2中是否存在 --- src/libs/tools.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libs/tools.js b/src/libs/tools.js index 0ca81d61f..bf3437077 100644 --- a/src/libs/tools.js +++ b/src/libs/tools.js @@ -14,12 +14,13 @@ export const forEach = (arr, fn) => { * @description 得到两个数组的交集, 两个数组的元素为数值或字符串 */ export const getIntersection = (arr1, arr2) => { - let len = Math.min(arr1.length, arr2.length) + if (!arr1.length || !arr2.length) return [] + let len = arr1.length let i = -1 let res = [] while (++i < len) { - const item = arr2[i] - if (arr1.indexOf(item) > -1) res.push(item) + const item = arr1[i] + if (arr2.indexOf(item) > -1) res.push(item) } return res }