javascript - 删除数组中的元素,这些元素是重复的,并且顺序跟随
问题描述
我有一个数组,它有时有重复的元素依次跟随。例如:
["<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);
}
}
}
}
我怎样才能解决这个问题?
解决方案
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.
推荐阅读
- css - CSS TranslateX 不会移动到 div 的右侧
- gridview - yii2 - 用数据库中两个表中的数据填充表
- ios - 如何设置 CALayer 的阴影打破 AutoLayout 约束?
- javascript - 将表单序列化和列表传递给控制器不起作用?
- wordpress - 将路由 53 dns 指向 AWS EC2 中的 wordpress 站点
- python-3.x - Pyautogui - 使用使用特殊键的代码时,键有时会卡住
- c - 用C中的其他字符替换空字符
- android - 在 FireBaseMessagingService 中使用 DownloadManager
- c - 在数组中使用指针下标
- c# - Microsoft Visual Studio 无法启动您的诊断会话