Javascript 删除数组中的元素,这些元素是重复的,并按顺序彼此跟随

Javascript 删除数组中的元素,这些元素是重复的,并按顺序彼此跟随,javascript,Javascript,我有一个数组,它有时有重复的元素按顺序彼此跟随。例如: ["<app-builder-navbar></app-builder-navbar>", "<app-builder-placeholder></app-builder-placeholder>", "<app-builder-hero></app-builder-hero>", "<app-builder-placeholder></app-

我有一个数组,它有时有重复的元素按顺序彼此跟随。例如:

["<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-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>"]
我下面的方法似乎有些有效,但有时会删除所有项或生成不稳定的结果集

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);
      }
    }
  }
}

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

这个问题处理得相当干净。其思想是将当前元素与其前一个元素进行比较,如果它们匹配,则将其从结果中忽略。对于包含未定义的边的情况,请小心添加a.slice1可能会有所帮助

const dedupleadjacent=a=>a.filtere,i=>e!==a[i-1]; 常量占位符=[ , , , , , ];
console.logdupleadjacentplaceholder 这件事做得很干净。其思想是将当前元素与其前一个元素进行比较,如果它们匹配,则将其从结果中忽略。对于包含未定义的边的情况,请小心添加a.slice1可能会有所帮助

const dedupleadjacent=a=>a.filtere,i=>e!==a[i-1]; 常量占位符=[ , , , , , ]; console.logdupleadjacentplaceholder 我建议使用此处提到的Array.filter:

filter函数只需检查当前元素是否与前一个元素相同,以及您可能需要的任何其他条件

我建议使用这里提到的Array.filter:


filter函数只需检查当前元素是否与前一个元素相同,以及您可能需要的任何其他条件

最简单的方法是将其转换为一个集合,然后再转换回一个数组:

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

任何重复的值都将被忽略,因为集合只包含唯一的值。

最简单的方法是将其转换为集合,然后再转换回数组:

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

任何重复的值都将被忽略,因为集合只包含唯一的值。

是否仅删除这些值的重复和连续实例:?或者是否要删除任何连续的值?是的,仅暂时删除,但以后可以删除任何其他连续的值。是否仅删除以下值的重复和连续实例:?或者是否要删除任何连续值?是的,只是暂时删除,但以后可以删除任何其他连续值。好主意,但这不能正确处理相邻元素。OP希望在结果中出现两次。好主意,但这不能正确处理相邻元素。OP希望在结果中出现两次。谢谢,我将如何使其仅在特定的阵列项上工作,即消除特定的.Done的重复匹配。如果有任何不合理的地方,请告诉我。谢谢,我将如何使其在特定阵列项目上工作,即消除特定的.Done的重复匹配。如果有什么不合理的地方,请告诉我。