首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在保留非连续重复项的同时从数组中删除重复项?

如何在保留非连续重复项的同时从数组中删除重复项?
EN

Stack Overflow用户
提问于 2015-06-08 18:49:16
回答 5查看 7.8K关注 0票数 9

我有一个类似于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),依此类推。

我试图将其转换为以下代码:

代码语言:javascript
复制
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);

我在解决如何输出一个表示数组中相同的元素组的元素时遇到了问题。如果元素不相同,则应该按照其在原始数组中的顺序输出。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-06-08 18:57:00

使用array.filter(),您可以检查每个元素是否与前面的元素相同。

就像这样:

代码语言:javascript
复制
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(', ');
代码语言:javascript
复制
<p id="result"></p>

票数 30
EN

Stack Overflow用户

发布于 2015-06-08 19:03:45

如果您完全按照算法进行查找,而不使用任何函数。

代码语言:javascript
复制
var arr = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4, 5, 5, 5];

    function identical(array){

        var newArray = [];
        newArray.push(array[0]);
        for(var i = 0; i < array.length -1; i++) {
            if(array[i] != array[i + 1]) {
                newArray.push(array[i + 1]);
            }
        }
        console.log(newArray);
    }
    identical(arr);

小提琴

票数 4
EN

Stack Overflow用户

发布于 2015-06-08 19:03:33

reduce的另一种方式

代码语言:javascript
复制
var arr = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4, 5, 5, 5];

var result = arr.reduce(function(acc, cur) {
  if (acc.prev !== cur) {
    acc.result.push(cur);
    acc.prev = cur;
  }
  return acc;
}, {
  result: []
}).result;


document.getElementById('d').innerHTML = JSON.stringify(result);
代码语言:javascript
复制
<div id="d"></div>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30716829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档