我试图在JavaScript中删除数组中的重复项。给定的数组是
resultant_array = [1,2,3,1,2]
array = [1,1,1,1,1,1,1,1,1,1,1,1]
此处第二个1不被视为重复
OR
resultant_array = [1]
<body>
<div class="navigation>...</div>
<div class="container other-content"></div>
</body>
我怎么能做到这一点的任何想法
答案 0 :(得分:1)
您可以像这样使用reduce
:
var array = [1,1,1,1,1,1,1,1,1,,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,1,1,1,1,1,2,2,2,2,2,2,22];
var result = array.reduce(function(r, e) {
if(r[r.length - 1] != e) // if the last element in the result is not equal to this item, then push it (note: if r is empty then r[-1] will be undefined so the item will be pushed as any number is != undefined)
r.push(e);
return r;
}, []);
console.log(result);
答案 1 :(得分:1)
var arr = [1,1,2,2,3,3];
var obj = {};
for(var i in arr) {
obj[arr[i]] = true;
}
var result = [];
for(var i in obj) {
result.push(i);
}
我将对象的键设置为数组的值,并且不能具有相同值的多个键。然后我把所有的钥匙都放在了结果中。
答案 2 :(得分:1)
您可以使用Array#reduce
var array = [1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2],
result = array.reduce(function (r, a) {
return r[r.length - 1] === a ? r : r.concat(a);
}, []);
console.log(result);
或者使用Array#filter
和一个对象作为最后一个值。
var array = [1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2],
result = array.filter(function (a, i, aa) {
return this.last !== a && (this.last = a, true);
}, { last: undefined });
console.log(result);