Javascript で配列の中のオブジェクトまで一致するか調べる方法です。
以下の options から selectedOptions があるかどうか調べます。
オブジェクトの比較に Array.some を使っていますが、 Array.includes だと上手くいかなくて、
条件を詳細に指定したい時、またはプリミティブな値では無い時に Array.some を使うのかなと思ってます。
const options = [
[
{
name: 'aaa',
value: 'AAA'
},
{
name: 'bbb',
value: 'BBB'
}
],
[
{
name: 'aaa',
value: 'AAA'
},
{
name: 'ccc',
value: 'CCC'
}
],
[
{
name: 'bbb',
value: 'BBB'
},
{
name: 'ccc',
value: 'CCC'
}
]
];
const selectedOptions = [
{
name: 'aaa',
value: 'AAA'
},
{
name: 'bbb',
value: 'BBB'
}
];
const targetOption = options.find((option) => {
const bools = option.map((option) => {
selectedOptions.some(
(_) => _.name === option.name && _.value === option.name
);
});
return !bools.includes(false);
});