Tìm khoảng cách nhỏ nhất giữa các cặp phần tử trùng lặp trong mảng.
Ví dụ: [2,3,4,2,5,4,1,3] → {'2':3, '3':6, '4':3}.
Mã thực hiện
const arr = [2,3,4,2,5,4,1,3];
const findDistance = arr => {
var map = {}, res = {};
arr.forEach((el, ind) => { map[el] = map[el] || []; map[el].push(ind); });
Object.keys(map).forEach(el => {
if (map[el].length > 1) {
res[el] = Math.min.apply(null, map[el].reduce((acc, val, i, a) => {
if (i) acc.push(val - a[i-1]); return acc;
}, []));
}
});
return res;
};
console.log(findDistance(arr));
Kết quả
{ '2': 3, '3': 6, '4': 3 }