有一个javascript数组
var arr = [0, 1, 2, 2, 3, 3, 5];
我想选择重复两次的元素。在这种情况下,它是2
和3
。我希望将它们附加到变量中。
var a = 2, b = 3;
据我所知,没有内置功能来完成这项工作。我怎样才能做到这一点。感谢。
答案 0 :(得分:1)
您可以使用filter
来获取两次出现的值。
var arr = [0, 1, 2, 2, 3, 3, 5];
var dups = arr.filter ( (v,i,a) => a.indexOf(v) < i );
console.log(dups);
&#13;
在评论中,你声明你只会有双打,但没有超过两次的值。请注意,如果后者属于这种情况,上述内容将返回一次以上的值。
这将返回数组中的值,这是您应该如何工作的。将它们放在单独的值中可以按如下方式进行:
var [a, b, ...others] = dups;
...但是您必须知道要为此保留多少变量,并且它不会使您的进一步程序更容易。 JavaScript为数组提供了许多不错的函数(方法),所以实际上你应该把它们放在一个数组中。
答案 1 :(得分:0)
确实没有内置功能。
在构建响应数组时,您必须循环思考数组并跟踪元素的出现次数。
答案 2 :(得分:0)
您可以过滤已排序的数组。
var arr = [0, 1, 2, 2, 3, 3, 5],
repeats = arr.filter(function (a, i, aa) {
return aa[i - 1] === a;
});
console.log(repeats);
答案 3 :(得分:0)
最简单的方法如下:
var dups = [];
var arr = [0, 1, 2, 2, 3, 3, 5];
arr.forEach(function (v, i, a){
delete arr[i];
if (arr.indexOf(v) !== -1){
dups.push(v);
}
});
console.log(dups);
然而,这是破坏性的。