回答編集履歴

1

テキスト修正

2020/02/19 01:01

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -45,3 +45,23 @@
45
45
 
46
46
 
47
47
  上記のサンプルでは、確認のため、`listA` に追加で `exist` が 1 の要素`{ filename: "7.jpg", exist: 1 }`を加え、`listB.Items` に `7.jpg` の要素を2個追加しています。これらも除外されることを確認できます。
48
+
49
+
50
+
51
+ ### 追記
52
+
53
+
54
+
55
+ `exist` が1の `filename` の値を集めたSet(または他の回答者様から提示されているように、配列)を作ってから、これを使って filter するのが効率的だと思いますが、これらの中間生成物を作らないでやろうとすると、以下で出来ます。
56
+
57
+ ```javascript
58
+
59
+ listB.Items = listB.Items.filter(e1 => !listA.find(e2 => e1.filename === e2.filename));
60
+
61
+ ```
62
+
63
+ - 動作確認用サンプル: [https://codepen.io/jun68ykt/pen/OJVXBXN?editors=0012](https://codepen.io/jun68ykt/pen/OJVXBXN?editors=0012)
64
+
65
+
66
+
67
+ ただしこれは、`filter` のループの中で、毎回 `find` するので非効率です。