[英]Remove repeating elements in an array
for(var i=0;i<d.length;i++) { current=d[i].businessunits; arraynew.push(current);//array new like this {0:EU;1:PU;2:MS;3:EU;4:PU} }
我有一个数组var k={"Eu","PU","MS","EU","PU"}
我只需要EU PU MS
因为EU
和PU
是重复的。如何删除重复元素大批。
在推送值之前检查元素是否已存在于数组中。
for(var i=0;i<d.length;i++)
{
current=d[i].businessunits;
if(arraynew.indexOf(current) === -1) arraynew.push(current);//array new like this {0:EU;1:PU;2:MS;3:EU;4:PU}
}
在 ES6 中,您可以使用Set
,因为 set 只保留一个相同的元素。
所有大写的解决方案。
var k = ["EU", "PU", "MS", "EU", "PU"]; k = [... new Set(k)]; console.log(k);
混合大小写的解决方案。
var k = ["Eu", "PU", "MS", "EU", "PU"]; k = [... new Set(k.map(a => a.toUpperCase()))]; console.log(k);
哈希表是一个很好的工具。 这是一些伪代码:
如果您使用的是支持集合的语言,那就更简单了——只需为数组中的每个元素更新一次集合。
使用Array.forEach
和Array.indexOf
函数的简单解决方案:
var arr = ["Eu","PU","MS","EU","PU"], result = []; arr.forEach(function(v){ result.indexOf(v.toUpperCase()) === -1 && result.push(v.toUpperCase()); }); console.log(result);
适用于所有浏览器:
myArray.filter(function (x, i, a) {
return a.indexOf(x) == i;
});
对于现代浏览器
[...new Set(myArray)]
在新数组中添加元素之前进行以下代码检查。 新数组不包含重复元素
for(var i=0;i<d.length;i++)
{
current=d[i].businessunits;
if(arraynew.indexOf(current) === -1) // if new array not contains element add in new array
arraynew.push(current);
}
您可以对数组进行排序并推送不匹配的元素。
var a = ["EU", "PU", "MS", "EU", "PU"]; var r = []; a.sort().reduce(function(p,c){ if(p!==c) r.push(c) return c; }, ''); console.log(r)
var a = ["EU", "PU", "MS", "EU", "PU"]; var r = [a[0]]; a.sort() for(var i = 0; i<a.length -2; i++){ if(a[i] !== a[i+1]) r.push(a[i+1]) } console.log(r)
简单的解决方案
var checkDuplicateObject = {},arraynew = [];
for(var i=0;i<d.length;i++)
{
if(checkDuplicateObject(d[i].businessunits)){
}else{
var current = d[i].businessunits;
arraynew.push(current);
checkDuplicateObject[d[i].businessunits] = true;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.