How to remove repeated entries from an array while preserving non-consecutive duplicates?

前端 未结 5 1917
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-06 19:35

I have an array like var arr = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4, 5, 5, 5]; I really want the output to be [5,2,9,4,5]. My logic for this was:

5条回答
  •  南方客
    南方客 (楼主)
    2020-12-06 19:59

    Using array.filter() you can check if each element is the same as the one before it.

    Something like this:

    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(', ');

提交回复
热议问题