1.去重字符串
var v = "1343、rere、1343、rerd";//需要去重的字符串 var arr = v.split('、');//["1343", "rere", "1343", "rerd"] Array.prototype.unique = function(){ var res = []; var json = {}; for(var i = 0; i < this.length;i++){ if(!json[this[i]]){ res.push(this[i]); json[this[i]] = 1; } } console.log(json);//{1343: 1, rere: 1, rerd: 1} return res; } console.log(arr.unique());//["1343", "rere", "rerd"] var qcsz = arr.unique().join("、"); console.log(qcsz);//1343、rere、rerd
思路:先创建一个空数组,和空对象;循环遍历数组元素;若是json[this[i] 是 undefined,则 !undefined 为 true,通过 res.push 将元素存到新的数组里,并且用json[this[i]] = 1的方法,给json对象增加新的属性;若是 json[this[i] 不为 undefined,为已赋值的1,则说明元素已存在,则不进入函数体;故可起到函数去重的作用。
Array.prototype.unique方法是为 Array的原型上,增加一个unique方法,这样所有的array都可以去继承这个方法,其中的this,指向调用unique方法的数组;
判断依据:
console.log(!undefined);//true console.log(!1);//false console.log(!-1);//false
对象增加属性示例:
var obj = {};
console.log(obj);//{}
obj["arr"] = 1;
console.log(obj);//{arr: 1}
console.log(obj["arr"]);//1
console.log(obj.arr);//1
2.数组对象去重
var arr = [
{orgId:"100",orgName:"信息组"},
{orgId:"100",orgName:"信息组"},
{orgId:"100",orgName:"信息组"},
{orgId:"81",orgName:"安全组"},
{orgId:"11",orgName:"秘书组"},
{orgId:"81",orgName:"安全组"}
];
var newArr = [];
var obj={};
//比较数组内的属性,并将其添加为obj的对象
for (var i = 0, length = arr.length; i < length; i++) {
//如果obj的orgid存在,说明已经重复
if(!obj[arr[i].orgId]){
newArr.push(arr[i])
/为obj的orgid属性赋值
obj[arr[i].orgId]=-1// -1或者 1 都行,只要是给非0数字即可
}
}
console.log(newArr) //这就是去重后的数组