这是我用来返回重复元素的方法。但是,当我的数组有大量长文本项目时,我面临着最危险的性能问题,例如浏览器关闭等。
var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7];
var sorted_arr = arr.sort();
var results = [];
for (var i = 0; i < arr.length - 1; i++) {
if (sorted_arr[i + 1] == sorted_arr[i]) {
results.push(sorted_arr[i]);
}
}
alert(results);
请建议我最好的方法
我没有得到你想要的,但如果你需要返回重复项,你可以使用缓存对象。这适用于数字或字符串或其他任何东西。
var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7];
var cache = {};
var results = [];
for (var i = 0, len = arr.length; i < len; i++) {
if(cache[arr[i]] === true){
results.push(arr[i]);
}else{
cache[arr[i]] = true;
}
}
console.log(results);//returns an array with 9 and 4
当然,您可以执行其他操作,例如删除多个项目等。
编辑 - 我写了一篇博客文章如何从数组中删除重复项 http://newcodeandroll.blogspot.it/2012/01/how-to-find-duplicates-in-array-in.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)