В каком порядке должны располагаться значения в результирующем массиве - так же, как в первом из исходных массивов, или как во втором?
Может ли быть так, что какие-то из значений второго массива отсутствуют в первом? Если да - добавлять в результирующий массив какое-то дефолтное значение, или ничего не делать?
Могут ли значения во втором массиве повторяться? Если да - сколько раз надо добавлять соответствующие им id в результирующий массив - один или согласно количеству повторений?
Могут ли значений title в первом массиве быть неуникальны? Если да, какие из соответствующих им id помещать в результирующий массив - первые, последние или все, что есть?
В общем,
вариантов тут масса, выбирайте:
computed: {
ids() {
return this.strings.map(n => this.objects.find(m => m.title === n)?.id);
},
// или
ids() {
const ids = this.objects.reduce((acc, n) => (acc[n.title] = n.id, acc), {});
return this.strings.map(n => ids[n] ?? 'Получить id не удалось - объекта с указанным title нет');
},
// или
idByTitle() {
return Object.fromEntries(this.objects.map(n => [ n.title, n.id ]));
},
ids() {
const ids = this.idByTitle;
return this.strings.reduce((acc, n) => (
Object.hasOwn(ids, n) && acc.push(ids[n]),
acc
), []);
},
// или
stringsSet() {
return new Set(this.strings);
},
ids() {
return this.objects.reduce((acc, n) => (
this.stringsSet.has(n.title) && acc.push(n.id),
acc
), []);
},
// или
idsByTitle() {
return this.objects.reduce((acc, n) => (
(acc[n.title] ??= []).push(n.id),
acc
), []);
},
ids() {
return this.strings.flatMap(n => this.idsByTitle[n] ?? []);
},
},
UPD. Вынесено из комментариев:
computed, к сожалению не подходит
Подходит. Так во vue принято оформлять данные, зависящие от других данных. Что спросили - на то и ответил.
Если вдруг у вас там vuex или pinia, то вместо computed надо поместить показанный код в getters, и в случае vuex также заменить this на обращение к параметрам - первый для стейта, второй для геттеров.
Если ещё что-то - ну сделайте обычную функцию, которая будет принимать ваши массивы.