数组去重
1, 数组去重
- ES6的set 方法
var arr = [1, 2, 2, 3, 5, 6, 3, 7, 4]
var arrCopy = new Set(arr); // [1, 2, 3, 5, 6, 7, 4]
- 对象属性存在的特性,如果没有该属性则存入新数组
var arr =[1, 2, 2, 3, 5, 6, 3, 7, 4]
function unique(arr) {
var obj={ }
var newArr=[ ]
for ( let i = 0; i < arr.length; i++ ) {
if ( !obj[arr[i]] ) {
obj.push(arr[i])
newArr.push(arr[i])
}
}
return newArr
}
console.log(unique(arr)); // [1, 2, 3, 5, 6, 7, 4]
- indexof 方法
var arr =[1, 2, 2, 3, 5, 6, 3, 7, 4]
function unique(arr) {
var newArr = []
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i])===-1) {
newArr.push(arr[i])
}
}
return newArr
}
console.log(unique(arr)); // [1, 2, 3, 5, 6, 7, 4]
- 利用includes
var arr =[1, 2, 2, 3, 5, 6, 3, 7, 4]
function unique(arr) {
if (!Array.isArray(arr)) {
return
}
var array =[];
for(var i = 0; i < arr.length; i++) {
if( !array.includes( arr[i]) ) { //includes 检测数组是否有某个值
array.push(arr[i]);
}
}
return array
}
拷贝数组
- ES6中扩展运算符(不去重,但是浅拷贝,是引用不是复制)
var arr =[1, 2, 2, 3, 5, 6, 3, 7, 4]
var arrCopy = [...arr]
arrCopy
- for循环浅拷贝
array = [1,2,3,4,5,6];
array2 = [ ];
for ( i = 0; i < array.length; i++) {
array2[i] = array[i];
}
array2 // [1,2,3,4,5,6];
- while() 浅拷贝
array = [1,2,3,4,5,6];
array2 = [ ];
i = -1
while ( ++i < array.length ) {
array2[i] = array[i]
}
array2 // [1,2,3,4,5,6];
- array.map() 浅拷贝
array = [1,2,3,4,5,6];
array2 = array.map(x=>x)
array2 // [1,2,3,4,5,6];
- array.filter() 浅拷贝
array = [1,2,3,4,5,6];
array2 = array.filter(()=>true)
array2 // [1,2,3,4,5,6];
- array.slice() 浅拷贝
array = [1,2,3,4,5,6];
array2 = array.slice()
array2 // [1,2,3,4,5,6];
- array.concat (浅拷贝)
array = [2,3,4,5,6];
array2 = [4,5,9,10,21];
array.concat(array2) // [2, 3, 4, 5, 6, 4, 5, 9, 10, 21]
- array.from (浅拷贝)
array = [2,3,4,5,6];
array2 = [ ];
array2 = Array.from(array) // [2,3,4,5,6]
- json格式转换(深拷贝)
json.stringify( ) // 将对象、数组转换成字符串
json.parse( ) // 将字符串转成json对象
网友评论