【发布时间】:2018-02-09 15:15:20
【问题描述】:
受How to merge two arrays in JavaScript and de-duplicate items 文章的启发,我测试了不同变体对于大量项目的速度和可靠性。 我也想提出另一个解决问题的建议。
【问题讨论】:
标签: javascript arrays merge unique
受How to merge two arrays in JavaScript and de-duplicate items 文章的启发,我测试了不同变体对于大量项目的速度和可靠性。 我也想提出另一个解决问题的建议。
【问题讨论】:
标签: javascript arrays merge unique
在示例中可以尝试使用哪个函数以及何时更快。 https://dojo.telerik.com/oYuCE/4
uniqueArray2 函数在大型项目上运行良好且快速。
jQuery 函数 $ .unique 工作得很快,但前提是项目已排序。否则,将不会过滤重复项。 样品:
var arr1 = ['Vijendra', 'Singh'], arr2 = ['Shakya', 'Singh'];
alert (JSON.stringify ($ .unique (arr1.concat (arr2))));
但不过滤重复项:
var arr1 = ['Vijendra', 'Singh'], arr2 = ['Singh,' Shakya ''];
alert (JSON.stringify ($ .unique (arr1.concat (arr2))));
过滤重复项。
uniqueArray2 函数运行良好:
function arrayUnique2 (array) {
var tmpArrAss = {};
$ .each (array, function (key, vs) {
tmpArrAss [hashCode (vs)] = vs;
});
var tmpArr = new Array ();
$ .each (tmpArrAss, function (key, vs) {
if (vs.length> 0) {
tmpArr.push (vs);
}
});
return tmpArr;
}
但是需要一个长字符串的编码器,这里有:
function hashCode (s) {
return s.split ("") reduce (function (a, b) {a = ((a << 5) -a) + b.charCodeAt (0); return a & a}, 0);
}
解决了。 这样做的缺点是该函数适用于很长的字符串。
arrayUnique2 快 20 倍。
【讨论】: