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