改变原数组
var arr=['h','e','l','l','o','2',1,2,1,3,2];
for(var i=0; i
会改变原数组以及数组元素顺序
var arr=['h','e','l','l','o','2',1,2,1,3,2];
arr.sort(function(a,b) { return a-b; } );
for(var i=0; i
不改变原数组,利用新数组存储去重后的数组。
/*
补充知识
*/
//Object.prototype.toString.call() 返回数据类型
//在对象中如:
var obj_temp={
1:'hello'
}
console.log(obj_temp[1]); // hello
console.log(obj_temp['1']);// hello
console.log(Object.prototype.toString.call(1)); // [object Number]
console.log(Object.prototype.toString.call('1')); // [object String]
//以上结果可以得出,会分不清1和'1',因此下面需要使用Object.prototype.toString.call()。
//去重
var arr=['h','e','l','l','o','2',1,2,1,3,2];
var quchong=[];
var obj={};
for(var i=0; i
indexOf():判断此元素在该数组中首次出现的位置下标与循环的下标是否相等。
1)for循环。 不改变原数组,利用新数组存储去重后的数组。
var arr=['h','e','l','l','o','2',1,2,1,3,2];
var quchong=[];
for(var i=0; i
2)filter()方法。 不改变原数组,利用新数组存储去重后的数组。
var arr=['h','e','l','l','o','2',1,2,1,3,2];
var quchong=[];
//方式一:
quchong = arr.filter(function(item,index,array) {
return quchong.indexOf(item) == -1 ? quchong.push(item) : '';
});
console.log(quchong); // [ "h", "e", "l", "o", "2", 1, 2, 3 ]
//方式二:
quchong = arr.filter(function(item,index,array) {
return array.indexOf(item) == index;
});
console.log(quchong); // [ "h", "e", "l", "o", "2", 1, 2, 3 ]
3)forEach()方法。 不改变原数组,利用新数组存储去重后的数组。
var arr=['h','e','l','l','o','2',1,2,1,3,2];
var quchong=[];
arr.forEach(function(item,index,array) {
if (quchong.indexOf(item) == -1) {
quchong.push(item);
}
});
console.log(quchong); // [ "h", "e", "l", "o", "2", 1, 2, 3 ]
4)map()方法。 不改变原数组,利用新数组存储去重后的数组。
var arr=['h','e','l','l','o','2',1,2,1,3,2];
var quchong=[];
arr.map(function(item, index, array) {
if (quchong.indexOf(item) == -1) {
quchong.push(item);
}
})
console.log(quchong); // [ "h", "e", "l", "o", "2", 1, 2, 3 ]
Set数据结构,它类似于数组,其成员的值都是唯一的。
1)利用Array.from将Set结构转换成数组。 不改变原数组,利用新数组存储去重后的数组。
var arr=['h','e','l','l','o','2',1,2,1,3,2];
var quchong=[];
function quchong_fnc(arr){
return Array.from(new Set(arr));
}
quchong = quchong_fnc(arr);
console.log(quchong); // [ "h", "e", "l", "o", "2", 1, 2, 3 ]
2)拓展运算符(...)内部使用for...of循环。 不改变原数组,利用新数组存储去重后的数组。
var arr=['h','e','l','l','o','2',1,2,1,3,2];
var quchong=[];
function quchong_fnc(arr){
return [...new Set(arr)];
}
quchong = quchong_fnc(arr);
console.log(quchong); // [ "h", "e", "l", "o", "2", 1, 2, 3 ]