1.我有这样一个数组,我想去除 JSON对象一模一样的;
2.[{name:"xiaohong",age:"16"},{name:"xiaohong",age:"16"},{name:"dawang",age:"22"},{name:"dawang",age:"22"}]
1.我有这样一个数组,我想去除 JSON对象一模一样的;
2.[{name:"xiaohong",age:"16"},{name:"xiaohong",age:"16"},{name:"dawang",age:"22"},{name:"dawang",age:"22"}]
arr=[{name:"xiaohong",age:"16"},{name:"xiaohong",age:"16"},{name:"dawang",age:"22"},{name:"dawang",age:"22"}]
res=arr.map(function(i){return JSON.stringify(i);})
function unique(arr) {
var ret = [];
for (var i = 0, j = arr.length; i < j; i++) {
if (ret.indexOf(arr[i]) === -1) {
ret.push(arr[i]);
}
}
return ret;
}
result=unique(res);//["{"name":"xiaohong","age":"16"}", "{"name":"dawang","age":"22"}"]
arr=result.map(function(i){return JSON.parse(i); })
Array.prototype.unique = function() {
var result= [];
var hash= {};
for(var i = 0; i < this.length; i++) {
if(!hash[this[i]]) {
result.push(this[i]);
hash[this[i]] = 1;
}
}
return result;
}
新建一个数组array,直接array.unique()
就行了
二楼的正解,你可以试一试,去重的方法一般都没有现成的,一般都是自己封装起来一个,后面自己在用。
或者我给你写一个原生js写的,你耶可以在这个基础上自由发挥
var arr=[
{name:"xiaohong",age:"16"},
{name:"xiaohong",age:"16"},
{name:"xiaohong",age:"16"},
{name:"xiaohong",age:"16"},
{name:"xiaohong",age:"16"},
{name:"dongfeng",age:"18"},
{name:"dawang",age:"22"},
{name:"dawang",age:"22"},
{name:"dawang",age:"22"},
{name:"dawang",age:"22"},
{name:"dawang",age:"22"},
{name:"dawang",age:"22"},
{name:"dawang",age:"22"},
{name:"dawang",age:"22"},
];
function deleteRepeat(arr) {
for(var i=0;i<arr.length-1;i++){
var old=arr[i]
for(var j=i+1;j<arr.length;j++){
if(old.name==arr[j].name && old.age==arr[j].age){
arr.splice(j,1);
j--;
}
}
}
console.log(arr)
return arr;
}
var newArr=deleteRepeat(arr);
这个newArr就是删除后的结果,没有重复的数组
10 回答11.2k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
这个不难。
先申明一个tempObj 对象,然后用Object.keys()获取键值。
遍历JSON数据,对每一个属性name判断:(判断可以用indexOf())是不是存在于tempObj的键值数组里,否的话,就添加进tempObj,是的话无操作。