选择数组元素是否重复两次 - Javascript

时间:2016-09-25 17:22:26

标签: javascript arrays

有一个javascript数组

var arr = [0, 1, 2, 2, 3, 3, 5];

我想选择重复两次的元素。在这种情况下,它是23。我希望将它们附加到变量中。

var a = 2, b = 3;

据我所知,没有内置功能来完成这项工作。我怎样才能做到这一点。感谢。

4 个答案:

答案 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;
&#13;
&#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);
然而,这是破坏性的。