对var arr=[1,2,3,1,2,3,5,6,23,4,2,5,7,9,23,6,5,3,2,21,4,65,3,3,4,6,2,5,7,7]去重
方法一:i从前到后遍历,j从后到i遍历,去掉相同的j
for(var i=0;i<arr.length;i++){
for(var j=arr.length;j>i;j--){
if(arr[i]===arr[j]){
arr.splice(j,1);
}
}
}
console.log(arr);
方法二:设置一个开关,在两层循环里判断如果有相同的数值就关掉开关,没有相同的打开开关push到数组中,
var newArr=[]
for(var i=0;i<arr.length;i++){
var bool = false
for(var j=0;j<i;j++){
if(arr[i]===arr[j]){
bool=true
break
}
}
if(!bool){
newArr.push(arr[i])
}
}
arr=newArr
newArr=null
console.log(arr)
方法三:直接用indexOf判断新数组是否有这个元素,如果有不进入if,如果没有就push没有的元素
var newArr=[]
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])===-1){
newArr.push(arr[i])
}
}
arr=newArr
newArr=null
console.log(arr)
方法4:利用对象的[“属性名”],来排除已有的元素,这样未有的元素就可以添加进新数组,
同样可以去重,必须得给obj[arr[i]]一个值,否则每次进入if语句obj[arr[i]]的值都是underfined
var newArr=[]
var obj={}
for(var i=0;i<arr.length;i++) {
if (!obj[arr[i]]) {
obj[arr[i]]=1
newArr.push(arr[i])
}
}
console.log(newArr,obj)
方法五:利用ES6 中set中元素无法重复这一属性去重
let arr=[1,2,4,6,2,4,6,1,2,4,5,7,6];
arr=Array.from(new Set(arr));
利用对象对数组去重并统计重复的个数
var newArr=[]
var obj={}
for(var i=0;i<arr.length;i++) {
if (!obj[arr[i]]) {
obj[arr[i]]=1
}else{
obj[arr[i]]++
}
}
console.log(newArr,obj)
数组对象去重并统计重复的个数
var data=[
{id:1001,icon:"img/1.png",name:"餐饮0",num:1,price:10,a:1},
{id:1002,icon:"img/2.png",name:"餐饮1",num:1,price:20,a:2},
{id:1002,icon:"img/2.png",name:"餐饮1",num:1,price:20,a:3},
{id:1003,icon:"img/3.png",name:"餐饮2",num:1,price:30,a:4},
{id:1003,icon:"img/3.png",name:"餐饮2",num:1,price:30,a:5},
{id:1004,icon:"img/4.png",name:"餐饮3",num:1,price:40,a:6},
{id:1005,icon:"img/5.png",name:"餐饮4",num:1,price:50,a:7},
{id:1005,icon:"img/5.png",name:"餐饮4",num:1,price:50,a:8},
{id:1006,icon:"img/6.png",name:"餐饮5",num:1,price:60,a:9},
{id:1006,icon:"img/6.png",name:"餐饮5",num:1,price:60,a:10},
{id:1006,icon:"img/6.png",name:"餐饮5",num:1,price:60,a:11},
{id:1007,icon:"img/7.png",name:"餐饮6",num:1,price:70,a:12},
{id:1008,icon:"img/8.png",name:"餐饮7",num:1,price:80,a:13},
{id:1008,icon:"img/8.png",name:"餐饮7",num:1,price:80,a:14},
{id:1008,icon:"img/8.png",name:"餐饮7",num:1,price:80,a:15},
{id:1009,icon:"img/9.png",name:"餐饮8",num:1,price:90,a:16},
{id:1010,icon:"img/10.png",name:"餐饮9",num:1,price:100,a:17}
];
function filterArrObj(Arr){
var num=1;
var newArr=Arr.filter(function (t,index) {
var bool=false;
for(var i=index+1;i<Arr.length;i++){
if(Arr[i].id===t.id){
bool=true;
num++;
break;
}
}
t.num=num;
if(!bool){
num=1;
return t;
}
});
return newArr
}