diff --git a/lib/ArrayEx.js b/lib/ArrayEx.js index 016627cf982a27b548da25a1cea889f9ec0edb99..cf6000cb4032cd90bbdf0f58f58ea00ad8e2622e 100644 --- a/lib/ArrayEx.js +++ b/lib/ArrayEx.js @@ -1,17 +1,13 @@ exports.多重笛卡尔积 = arr => arr.reduce((as, bs) => as.map(a => bs.map(b => [...a, b])).flat(), [[]]) -exports.数组去重 = (判别式, 数组) => { - var 包含 = (判别式, 项, 数组) => { - for (var i = 0; i < 数组.length; i++) { - if (判别式(数组[i], 项)) - return true - } - return false - } - +exports.数组去重 = (迭代器, 数组) => { + var s = new Set() var r = [] for (var i = 0; i < 数组.length; i++) { - if (!包含(判别式, 数组[i], r)) + var key = 迭代器(数组[i]) + if (!s.has(key)) { + s.add(key) r.push(数组[i]) + } } return r } diff --git "a/\350\241\245\345\205\250\345\256\236\347\216\260.js" "b/\350\241\245\345\205\250\345\256\236\347\216\260.js" index de44a87bac5a1c95738c709ccf326b66e3d8f497..278bac668f634a6a396ae79d6ef686890470b093 100755 --- "a/\350\241\245\345\205\250\345\256\236\347\216\260.js" +++ "b/\350\241\245\345\205\250\345\256\236\347\216\260.js" @@ -105,7 +105,7 @@ async function provideCompletionItems(document, position, token, context) { } } - 补全项 = 数组去重((a, b) => a.label == b.label, 补全项) + 补全项 = 数组去重(a => a.label, 补全项) // 过滤下面的部分 // 1 不包含中文的关键词没必要加拼音,因此过滤 // 2 现在正在输入的字段不需要加入补全项