javascript - 在插入数组之前检查重复项
问题描述
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}
我只想传递 to 的更新updatedObject
元素updateObjectFunction()
。但是,我不想传入一个键以不同值出现两次的元素。
到目前为止,我有:
for (key of keysArray) {
if originalObject[key] !== updatedObject[key] {
updatedElements[key] = updatedObject[key];
}
}
updateObjectFunction(updatedElements);
如何避免updatedElements
有效地将重复的元素推入?或者我是否应该重新设计流程以提高效率。我只想使用原生 JavaScript 函数。我考虑使用some()
过滤掉 for 循环中的重复元素,但我认为这太慢了。
解决方案
您可以使用Set删除重复的键:
该
Set
对象允许您存储任何类型的唯一值,无论是原始值还是对象引用。
// "one" is in the list twice:
const arr = ['one', 'two', 'three', 'one', 'five']
console.log([...new Set(arr)])
推荐阅读
- android - 我在运行命令时遇到这些错误(npx react-native init AwesomeProject)
- javascript - 如何在 Cognos 的日期提示中将月份的第一天设置为默认值
- android-studio - Facebook 个人资料图片未在 android studio 中显示,我同时使用了 glide 和 Picasso
- html - 关注复选框与复选框边框和轮廓不一致
- python - 枕头包是必需的,但我已经有最新版本
- google-cloud-platform - GCP 中是否有中央 API 或语言库来标记所有资源?
- javascript - 我在 Javascript 上的突破克隆的暂停/播放按钮
- javascript - Angular js控制器不向mvc控制器发送数据
- c++ - 从标记为 extern C 的函数调用损坏的类实例方法
- keras - Understanding Keras batch_size vs. batch dimension for LSTM