Я на собеседовании решил задачку:
/**
* @param {Array<number>} array
* @return {Array<number>}
*/
const getSumNestElem = (array) => {
const result = [];
array.forEach((item, i) => {
const newValue = (array[i - 1] || 0) + (array[i + 1] || 0);
result.push(newValue);
});
return result;
};
const array = [0, 1, 2, 3, 4];
const result = getSumNestElem(array);
console.log(result); // [1, 2, 4, 6, 3]
Затем интервьюер усложнил задание: попросил отформатировать текущий массив:
/**
* @param {Array<number>} array
* @return {void}
*/
const formatSumNestElem = (array) => {
// make each item is equal to: array[i - 1] + array[i + 1]
};
const array = [0, 1, 2, 3, 4];
formatSumNestElem(array);
console.log(array); // [1, 2, 4, 6, 3]
Я безуспешно поигрался с замыканием:
const formatSumNestElem = (array) => {
for (let i = 0; i < array.length; i++) {
const item = array[i];
(() => {
const newValue = (array[i - 1] || 0) + (array[i + 1] || 0);
array[i] = newValue;
})();
}
};
Подскажите, пожалуйста, как хорошо решить эту задачку: отформатировать массив заданным способом.