- ste (ES6)
var arr = [1, 2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8, 9, 9, 0, 1, 2, 4];
function updata(arr) {
return Array.from(new Set(arr))
}
console.log(updata(arr)) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
- splice
思路:利用for循环拿第一个和后面的比 如果发现有相同的 用 splice 方法去掉
- splice 用法 :splice 修改 (下标开始位置,删除元素的长度,新增元素,…)
两个参数时
var arr = [5,6,7,8,9];
console.log(arr.splice(1,2)) // 6,7
console.log(arr)//[5, 8, 9]
var arr = [1, 2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8, 9, 9, 0, 1, 2, 4];
function del(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1);
i--;
}
}
}
return arr;
}
console.log(del(arr)); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
- index of
用法: indexof 元素,从哪个下标开始向右找} 查找在元素中第一次出现的下标位置如果没有找到返回-1
思路: 利用了indexOf()方法(indexOf()方法如果查询到则返回查询到的第一个结果在数组中的索引,如果查询不到则返回-1)。先创建一个新的空数组用来存储新的去重的数组,然后遍历arr数组,在遍历过程中,分别判断newArr数组里面是不是有遍历到的arr中的元素,如果没有,直接添加进newArr中,
var arr = [1, 2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8, 9, 9, 0, 1, 2, 4];
var newArr = [];
for(var i = 0 ; i < arr.length ; i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i])
}
}
console.log(newArr) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
- includes
用法: :
includes() 方法用于判断字符串是否包含指定的子字符串。
如果找到匹配的字符串则返回 true,否则返回 false。
const testArray = [1,2,3,4,5];
console.log(testArray.includes(1)) //true
const testArray = [1,2,3,4,5]; //第二个参数为搜索的起始位置
console.log(testArray.includes(1,2)) //false
思路:includes()方法来判断一个数组是否包含一个指定的值,根据情况,如果包含就返回true,不包含就返回false
Array.isArray() 用于确定传递的值是否是一个数组
function fn(arr){
if(!Array.isArray(arr)){ //如果不是数组就报错
console.log('type erreor')
return
}
let array = []
for(var i = 0; i < arr.length; i++){
if(array.indexOf(arr[i]) === -1){
array.push(arr[i])
}
}
return array
}
console.log(fn(arr)) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
- set 数组去重的方法
let arr = [12,43,23,43,68,12];
let item = [...new Set(arr)];
console.log(item);//[12, 43, 23, 68]