提个小小的建议,关于数组的去重
Closed this issue · 4 comments
rbinnn commented
如果我要对下面的数组去重呢?
var arr = [1,2,3,'1','2','3','4','5',1,2,3]
xxxBW commented
更改之后利用类型和数值来进行判断,之后更改为用for循环,因为用forEach会把字符串转换为数字。
for(var i = 0;i < len;i++) { // 利用类型和数值做键值 var key = typeof(arr[i]) + arr[i]; if(!obj[key]) { // obj中不存在该属性则添加并且把字段加入到str中 obj[key] = true; str.push(arr[i]); } }
rbinnn commented
forEach不会把数字转换成字符串的 , 不然你看下面运行的结果
var arr = [1,2,3,'1','2','3','4','5',1,2,3];
arr.forEach(function(item,index){
console.log(typeof item);
})
把数字变成字符串的是它 ====> obj[key]
rbinnn commented
换成
var key = JSON.stringify(item);
if( !obj[key] ){
obj[key] = true;
str.push(arr[i]);
}
应该就可以
xxxBW commented
咦,真的是酱紫的,昨晚不知怎么测的,我看typeof item都是number