javascript - 如果存在重复值,则从数组中删除一个对象。 JavaScript

标签 javascript ecmascript-6

给定数组 [{fruit1:"apple"},{fruit2:"banana"},{fruit3:"apple"}] 我将如何删除具有重复值的元素。在此示例中,我只想保留具有“apple”的键值对之一,从数组中删除该元素。

最佳答案

您可以将数组缩减为 Map .对于每个对象,使用 Object.entries() 提取键/值对.除非 Map 的键(例如 apple)已经存在,否则使用该值作为新 Map 条目的键,并使用原始键作为值。然后您可以使用 Array.from() 将其转换回数组, 并切换键和值:

const data = [{fruit1:"apple"},{fruit2:"banana"},{fruit3:"apple"}];

const result = Array.from(
  data.reduce((m, o) => {
    const [k, v] = Object.entries(o)[0];

    return m.has(v) ? m : m.set(v, k);
  }, new Map()),
  ([k, v]) => ({ [v]: k })
);

console.log(result);

关于javascript - 如果存在重复值,则从数组中删除一个对象。 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52432227/

相关文章:

javascript 复选框创建元素

javascript - 在窗口调整大小时计算圆圈的大小

javascript - 如何在 Chrome 扩展的内容脚本中导入 ES6 模块

javascript - ES6 : Accessing to class'es 'this' from inner local function

typescript - 使用 ES6 集合类型创建和发布 NPM 模块

Javascript 树头数组

javascript - 如何在 php 中使用用 javascript 语言声明的 for 循环变量

javascript - 复制一个对象中的所有元素,但与另一对象中的元素共享 key 的元素除外

javascript - 如何使用正则表达式计算或替换 javascript 中 { } 或 [ ] 之间的所有匹配单词?

javascript - 停止搜索引擎索引页面的特定部分