如果值重复,则从数组中删除对象。的JavaScript

时间:2018-09-20 19:43:27

标签: javascript ecmascript-6

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

1 个答案:

答案 0 :(得分:4)

您可以将数组简化为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);