javascriptでobject配列の重複を除去する
[...new Set(array)]を使えば配列の重複を除去することができるが、objectの場合はうまく行かない
多分内部で使っている参照の値が違うと、それだけで違うobject扱いされるからだと思う
object配列もなんとか重複除去したい場合は、JSON.stringifyで一旦文字列にしてから重複除去を行う
code:js
...new Set(array.map(value => JSON.stringify(value))).map(value => JSON.parse(value));
/emoji/warning.icon函数は欠落する
一度生成したobjectを使い回せば、Set<T>で重複除去できる
それは {foo:45,bar:77} とオブジェクトリテラルを使って新しいオブジェクトを作り直しているからですね。それぞれ別々のオブジェクトなので別々のものとして扱われます。
こんな感じで、オブジェクトリテラルで毎回新しいオブジェクトを生成せずに、一度生成したものを使い回せばちゃんと重複削除できます。
code:js
const obj = { foo: 45, bar: 77 };
const set = new Set(obj, obj);
console.log(Array.from(set)) // foo: 45, bar: 77 }
from https://github.com/mizdra/scrapbox-userscript-icon-suggestion/pull/55#discussion_r643196355
Thanks, /mizdra/mizdra.icon!
#javascript
#2021-06-02 02:17:58
#2020-11-10 15:43:20