「リストAのexistが1の場合(3.jpg)に、そのファイル名を元にリストBから"3.jpg"を削除する」といことであれば、以下のように書くとできると思います。
js
1// リストA
2const listA = [
3 { filename: "3.jpg", exist: 1 },
4 { filename: "5.jpg", exist: 0 },
5 { filename: "6.jpg", exist: 0 }
6];
7
8// リストB
9const listB = {
10 Items: [
11 { filename: "1.jpg", size: 1024 },
12 { filename: "2.jpg", size: 1024 },
13 { filename: "3.jpg", size: 1024 },
14 { filename: "4.jpg", size: 1024 }
15 ]
16};
17
18const existItem = listA.filter(item => item.exist === 1)[0];
19const result = listB.Items.filter(item => item.filename !== existItem.filename);
20console.log(result);
21
22=>
23[
24 { filename: "1.jpg", size: 1024 },
25 { filename: "2.jpg", size: 1024 },
26 { filename: "4.jpg", size: 1024 }
27]
もし、最初のリストにexist: 1
のオブジェクトが複数ある場合は、以下のように書くとフィルタリングできると思います。
js
1// リストC
2const listC = [
3 { filename: "1.jpg", exist: 1 },
4 { filename: "3.jpg", exist: 1 },
5 { filename: "6.jpg", exist: 0 }
6];
7
8// リストD
9const listD = {
10 Items: [
11 { filename: "1.jpg", size: 1024 },
12 { filename: "2.jpg", size: 1024 },
13 { filename: "3.jpg", size: 1024 },
14 { filename: "4.jpg", size: 1024 }
15 ]
16};
17
18const existFilenames = listC
19 .filter(item => item.exist === 1)
20 .map(item => item.filename);
21const result2 = listD.Items.filter(
22 item => existFilenames.indexOf(item.filename) === -1
23);
24console.log(result2);
25
26=>
27[
28 { filename: "2.jpg", size: 1024 },
29 { filename: "4.jpg", size: 1024 }
30]
サンプルコード
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/19 01:34
2020/02/19 03:43