我有一个数组
var aos = ["a","a","a","b","b","c","d","d"];
我想知道,如果它在数组中找到2个或更多相同值,是否只能删除1个项目。因此,例如,如果发现
"a", "a"
它将删除其中一个“ a”
这是我当前的代码:
var intDennis = 1;
for (var i = 0; i < aos.length; i++) {
while (aos[i] == aos[intDennis]) {
aos.splice(i, 1);
intDennis++;
console.log(aos[intDennis], aos[i]);
}
intDennis = 1;
}
注意:我的数组已排序。
最佳答案
在更好地了解OP用例之后进行了编辑。
更新了解决方案和提琴测试,以将pst的建议纳入注释中。
(并非没有,但是此方法不需要对原始数组进行排序。)
尝试这个...
var elements = [];
var temp = {};
for (i=0; i<aos.length; i++) {
temp[aos[i]] = (temp[aos[i]] || 0) + 1;
}
for (var x in temp) {
elements.push(x);
for (i=0; i<temp[x]-2; i++) {
elements.push(x);
}
}
Fiddle Test