Что делается во всех ваших решениях с примером первого метода:
//Method # 1
array.forEach((item, index) => dic[item] = index)
приведет к:
dic[2] = 0
dic[2] = 1 // will overwrite the previous value
dic[3] = 2
dic[4] = 3
Как вы можете видеть, ни один элемент не удаляется, но dic[2]
будет перезаписано.
Если вы хотите отобразить массив с неуникальными значениями в хэш-карту, тогда вместо скалярных значений вы можете просто добавить элементы в массив, например:
TypeScript Hashmap будет выглядеть так:
type MyMap = Record<number, number[]>
Код:
const map = array.reduce((result, current, index) => ({
...result,
[current]: [...(result[index] || []), index]
}), {});
array.reduce reference