【问题标题】:Check for duplicates before array insertion在插入数组之前检查重复项
【发布时间】:2021-01-20 18:15:03
【问题描述】:
keysArray: ['key1', 'key2', ..., 'keyn']
originalObject: key-value pairs { key1: value1, key2: value2, ..., keyn: valuen}
updatedObject: pairs with up to n updates values { key1: updatedValue1, key2: value2, key3: updateValue3, ..., keyn: valuen}

我只想将updatedObject 的更新元素传递给updateObjectFunction()。但是,我不想传入一个键以不同值出现两次的元素。

到目前为止,我有:

for (key of keysArray) {
  if originalObject[key] !== updatedObject[key] {
    updatedElements[key] = updatedObject[key];
  }
}
updateObjectFunction(updatedElements);

如何有效避免将重复的元素推入updatedElements?或者我是否应该重新设计流程以提高效率。我只想使用原生 JavaScript 函数。我考虑使用some() 过滤掉for循环中的重复元素,但我认为这太慢了。

【问题讨论】:

  • 请添加一些数据和想要的结果。
  • 什么是updatedElements?数组或对象。看起来您可能像使用对象一样使用它。如果是这样,则不能在对象中复制键。
  • 您可能想研究使用 Sets developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。默认情况下,它们只允许唯一的项目。不知道这是否符合你的使用场景。
  • @Taplar 这是一个对象。你说得对。密钥不能重复,因此重复删除没有用处。
  • 你在哪里东西?

标签: javascript arrays loops duplicates


【解决方案1】:

您可以使用Set 删除重复键:

Set 对象允许您存储任何类型的唯一值,无论是原始值还是对象引用。

// "one" is in the list twice:
const arr = ['one', 'two', 'three', 'one', 'five']

console.log([...new Set(arr)])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多