版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Amy_cloud/article/details/84316265
- 1 . 利用双层循环,对数组去重
function unique(arr) {
var ret = [];
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = i + 1; j < len; j++) {
if (arr[i] === arr[j]) {
j = ++i;
}
}
ret.push(arr[i]);
}
return ret;
}
unique([1,2,3,1,2,3])
// [1, 2, 3]
- 2 . 数组对象去重 ,利用 js里面的 delete 方法,但是该方法不会改变数组的长度
var arr = [{name:'12121',age:12,show:true},{name:'1212231',age:132,show:false},{name:'1212134',age:32,show:false},{name:'1212321',age:1322,show:true}]
for(var i=0;i<arr.length;i++){
for(var item in arr[i]){
if( arr[i][item] == true ){
delete arr[i]
}
}
}
console.log(arr)
PS:在VUE项目中做页面渲染的时候加一个条件:
<ul class="ul">
<li v-for="(item,i) in list" :key="i" v-if="item != undefined">
<p>{{item.name}}</p>
<p>{{item.age}}</p>
</li>
</ul>
补充:
var arr = [{name:'12121',age:12,show:true,id:1},{name:'12121',age:12,show:true,id:1},{name:'dsldk',age:12,show:true,id:2},{name:'popop',age:12,show:true,id:2}]
var hash = {};i = 0; res = [];
for(var i=0;i<arr.length;i++){
var name = arr[i].name;
id = arr[i].id;
age = arr[i].age;
show = arr[i].show;
hash[id] ? res[hash[id] - 1] : hash[id] = ++i &&res.push({
name: name,
id:id,
age: age,
show:show
})
}
方法二:
在数组中都是对象的时候就需要设置布尔值来进行去重操作,原理也是两层for循环,但是在第一层for循环内需要定义布尔值为true,用来维持一个量,之后在内层for循环中进行比对,如果按照某个条件比对满足的话,布尔值就为false,之后在第一层for循环里第二层for循环外进行布尔判断,如果为真,将数据插入到新数组,如果不为真,则不用添加。
var arr = [
{id:1,name:"2121",age:18,contact_id:11},
{id:1,name:"4343",age:18,contact_id:22},
{id:1,name:"6566",age:18,contact_id:33},
{id:1,name:"7677",age:18,contact_id:14},
{id:1,name:"8989",age:18,contact_id:33},
{id:1,name:"0909",age:18,contact_id:22},
{id:1,name:"0877",age:18,contact_id:1}
];//原数据数组
var newArr = [];//新数组
for(var i=0;i<arr.length;i++){
var flag = true;
for(var j=0;j<newArr.length;j++){
if(arr[i].contact_id == newArr[j].contact_id){
flag = false;
};
};
if(flag){
newArr.push(arr[i]);
};
};