Если array1
имеет тот же порядок, что и array2
, вы можете взять закрытие по индексу и использовать некоторое время l oop внутри обратного вызова для отображения найденных индексов.
var array1 = ["a", "d", "e"],
array2 = ["a", "b", "c", "d", "e", "f"],
indices = array1.map((i => v => {
while (array2[++i] !== v) ;
return i;
})(-1));
console.log(indices); // [0, 3, 4]
Для не определенного порядка вы ни один не используете l oop для сбора индексов, а другой - для отображения собранных индексов.
var array1 = ["a", "d", "e"],
array2 = ["a", "b", "c", "d", "e", "f"],
indices = array1.map(
Map.prototype.get,
array2.reduce((m, v, i) => m.set(v, i), new Map)
);
console.log(indices); // [0, 3, 4]