js 去重(字符串、数组对象)

时间:2023-01-30 07:59:48

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) //这就是去重后的数组