Какое свойство проверяем:
const key = 'strategy';
.
Достаём объекты:
const result = arr.filter(function(n) {
return this.has(n[key]);
}, new Set(arr2));
или
const result = arr2.flatMap(((values, n) => values[n] ?? []).bind(
null,
arr.reduce((acc, n) => ((acc[n[key]] ??= []).push(n), acc), {})
));
или
const result = [];
for (const n of arr) {
for (const m of arr2) {
if (m === n[key]) {
result.push(n);
break;
}
}
}
или
const result = [];
for (let i = 0; i < arr.length; i++) {
if (~arr2.indexOf(arr[i][key])) {
result[result.length] = arr[i];
}
}
или
const result = (function get(i, n = arr[i]) {
return n
? [].concat(arr2.includes(n[key]) ? n : [], get(-~i))
: [];
})(0);