首页 > 解决方案 > 删除数组中的元素,这些元素是重复的,并且顺序跟随

问题描述

我有一个数组,它有时有重复的元素依次跟随。例如:

["<app-builder-navbar></app-builder-navbar>",
 "<app-builder-placeholder></app-builder-placeholder>",
 "<app-builder-hero></app-builder-hero>",
 "<app-builder-placeholder></app-builder-placeholder>",
 "<app-builder-placeholder></app-builder-placeholder>",
 "<app-builder-footer></app-builder-footer>"]

我想删除所有重复元素(即<app-builder-placeholder></app-builder-placeholder>)按顺序相互跟随的实例。所以上面的内容最终看起来像这样:

["<app-builder-navbar></app-builder-navbar>",
 "<app-builder-placeholder></app-builder-placeholder>",
 "<app-builder-hero></app-builder-hero>",
 "<app-builder-placeholder></app-builder-placeholder>",
 "<app-builder-footer></app-builder-footer>"]

我下面的方法似乎有点工作,但<app-builder-placeholder></app-builder-placeholder>有时会删除所有项目或产生不稳定的结果集。

function deleteDuplicatePlaceholders(components) {
  for (let i = 0; i < components.length; i++) {
    for (let j = 1; j < components.length; j++) {
      if (components[i] === '<app-builder-placeholder></app-builder-placeholder>' &&
        components[j] === '<app-builder-placeholder></app-builder-placeholder>') {
        components.splice(i, 1);
      }
    }
  }
}

我怎样才能解决这个问题?

标签: javascript

解决方案


Simplest way is to turn it into a Set and then back into an Array:

const placeholders = Array.from(new Set([someDuplicatedValues]));

Any duplicated values will be omitted, since Sets only contain unique values.


推荐阅读