1.。数组去重
(1).下标去重
function unquire (arr){
var dest = [];
for(var i = 0 ; i < arr.length ; i ++){
if(dest.indexOf(arr[i]) == -1){
dest.push(arr[i])
}
}
return dest
}
arr.indexOf(str);就是在arr中搜索str,返回str在arr中第一次出现的位置 如果找不到则返回-1;
(2)。常规去重
先排序 在根据排序 来去重;
function unquire1 (arr) {
var arr = arr.sort();
var dest = [];
for(var i = 0; i < arr.length;){
var count = 0;
for(var j = i; j < arr.length; j ++) {
if(arr[i] === arr[j]){
count ++;
}
}
dest.push(arr[i]);
i += count;
}
return dest
}
先进行排序 然后将当前元素与后续的元素进行比较,,如果相等则外层循环 的次数加上重复的次数(注意使用=== 因为==只强调数值相等即可不进行类型的强转换);; 同时利用这个函数也能进行数组中相同元素重复次数的;
既 将dest.push(arr[i]) 更改成 dest.push([arr[i],count]) 就能返回一个二维数组 二维数组里 第一个为重复的数,第二个为重复的次数;(111111111)
(3)基本去重 立flag;
function unquire2(arr) {
var dest = [arr[0]];
for(var i = 0; i < arr.length; i ++){
var isUnquire = true;
for(var j = 0; j < dest.length; j ++){
if(arr[i] === dest[j]){
isUnquire = false;
}
}
if(isUnquire) {
dest.push(arr[i])
}
}
return dest ;
}
把原数组的第一个赋予新数组,然后把原数组的每一个数与新数组作比较 如果相等就是有重复的,那么在外层循环就不应该吧这个数加入新数组;
2 数组的重复次数在数组去重的第二个中有讲过 。。可以参考上面 代码如下;
function repeatNum (arr) {
var arr = arr.sort();
var dest = [];
for(var i = 0; i < arr.length;){
var count = 0;
for(var j = i; j < arr.length; j ++) {
if(arr[i] === arr[j]){
count ++;
}
}
dest.push([arr[i],count]);
i += count;
}
return dest
}
3 根据相同的id 或者name 来处理数据
var arr = [
{
"id": "1001",
"name": "值1",
"value": "111"
},
{
"id": "1001",
"name": "值1",
"value": "11111"
},
{
"id": "1002",
"name": "值2",
"value": "25462"
},
{
"id": "1002",
"name": "值2",
"value": "23131"
},
{
"id": "1002",
"name": "值2",
"value": "2315432"
},
{
"id": "1003",
"name": "值3",
"value": "333333"
}
];
function devide (arr) {
var obj = {};
var dest = [];
for(var i = 0; i < arr.length; i ++){
var a = arr[i];
//当访问的对象属性是变量时用方括号来访问属性
if(!obj[a.id]) {
dest.push({
id: a.id,
name: a.id,
data: [a]
})
//把每个对象的id属性 赋给obj 这样每次循环就能判别会不会出现新的id
obj[a.id] = a.id;
} else {
for(var j = 0; j < dest.length; j ++){
var b = dest[j]
if(a.id == b.id) {
dest[j].data.push(a);
//找到同样id的之后 后面的就不用循环了 所以跳出循环
break;
}
}
}
}
return dest;
}
总的来说就这些了 如有错误请指正