javascript – 如何从数组中删除重复的条目,同时保留非连续的重复项?

我有一个像var arr = [5,5,5,2,2,2,2,2,9,4,5,5,5]的数组;我真的希望输出为[5,2,9,4,5].我的逻辑是:

>逐个浏览所有元素.
>如果元素与prev元素相同,则计算元素并执行类似newA = arr.slice(i,count)的操作
>新数组应该只填充相同的元素.
>对于我的示例输入,前3个元素是相同的,因此newA将类似于arr.slice(0,3),newB将是arr.slice(3,5),依此类推.

我试着把它变成以下代码:

function identical(array){
    var count = 0;
    for(var i = 0; i < array.length -1; i++){
        if(array[i] == array[i + 1]){
            count++;
            // temp = array.slice(i)
        }else{
            count == 0;
        }
    }
    console.log(count);
}
identical(arr);

我在确定如何输出表示数组中相同元素组的元素时遇到问题.如果元素不相同,则应按原始数组中的顺序输出.

最佳答案
使用array.filter(),您可以检查每个元素是否与之​​前的元素相同.

像这样的东西:

var a = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4, 5, 5, 5];

var b = a.filter(function(item, pos, arr){
  // Always keep the 0th element as there is nothing before it
  // Then check if each element is different than the one before it
  return pos === 0 || item !== arr[pos-1];
});

document.getElementById('result').innerHTML = b.join(', ');
<p id="result"></p>

转载注明原文:javascript – 如何从数组中删除重复的条目,同时保留非连续的重复项? - 代码日志