方法1. 创建一个新的数组,向数值中写入新的数据,只有没有的数据,才写入
// 方法1
const arr = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
console.log( setArray1(arr) );
function setArray1(array){
const arr = [];
array.forEach( v=>{
if(arr.indexOf(v) === -1){
arr.push(v);
}
} )
return arr;
}
方法2. 双重for循环
从第一个单元开始,和之后的每一个单元比较,如果相同,就删除之后的单元
下一次,就是从第二个单元开始循环,和之后的每一个单元比较
为了防止数组坍塌的影响, 循环要 --
// 方法2
const arr = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
console.log( setArray2(arr) );
function setArray2(array){
for(let i = 0 ; i <= array.length-1-1 ; i++){
for( let j = i+1 ; j <= arr.length-1 ; j++ ){
if( array[i] === array[j] ){
array.splice(j,1);
j--;
}
}
}
return array;
}
方法3.先对数组排序
从第一个单元开始,相邻的两个单元,进行比较
如果数据相同,就删除后面的单元
为了防止数组坍塌的影响, 循环要 --
// 方法3
const arr = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
console.log( setArray3(arr) );
function setArray3(array){
array = array.sort(function(a,b){return a-b});
for(let i = 0 ; i <= array.length-1-1 ; i++){
if (array[i] === array[i+1]) {
array.splice(i+1 , 1);
i--;
}
}
return array;
}
方法4.利用对象不会存储重复键名的特点
对象中,对已经存在的键名进行操作,是修改操作,不会是新增单元操作
将数组的数值,作为键名,存储在一个对象中
最后再将 对象的键名 存储给数组的数值
问题:设定给对象的键名,就会变成字符串类型
// 方法4
const arr = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
console.log( setArray4(arr) );
function setArray4(array){
const obj = {};
const arr = [];
array.forEach( (v) => {
obj[v] = '随便';
} )
for(let key in obj){
arr.push( key );
}
return arr;
}
方法5.利用set类型的特点,不会存储重复数据
将数组结构赋值给set,再将set中的数据,赋值给新数组
// 方法5
const arr = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
console.log( setArray5(arr) );
function setArray5(array){
// 将原始数组的数据,展开赋值给set类型
// 在赋值的过程中,set类型是不会存储重复的数据
// 原始数组中,重复的数据,就不会存储在set类型中
// const set = new Set([...array]);
// // 再将set中的数据,展开,赋值给新的数组
// // 这个新数组中,存储的数据,就没有重复数据了
// const arr = [...set];
// console.log(arr);
// 合并之后的代码
return [...new Set([...array]) ];
}
Comments | NOTHING