partyzanx
@partyzanx

Как коротко переписать lodash функцию fill?

Занимаюсь тренировкой JS, переписываю библиотеку lodash.
На очереди функция fill
Бросаю вызов тому, кто сможет переписать короче и умнее)
Мой код

//////////////// fill(array, value, [start=0], [end=array.length]) ////////////////
// Fills elements of array with value from start up to, but not including, end.
// https://lodash.com/docs/4.17.15#fill

let array = [1, 2, 3];

function fill (arr, filler, start = 0, end = arguments[0].length) { 
  filler = new Array(end - start).fill(filler);
  let temp = arr;
  temp.splice(start,end === arguments[0].length ? end : end - 1, ...filler);
  return temp
}

console.log(fill(array, 'a')); 
// => ['a', 'a', 'a']
 
console.log(fill(Array(3), 2));
// => [2, 2, 2]
 
console.log(fill([4, 6, 8, 10], '*', 1, 3));
// => [4, '*', '*', 10]

console.log(fill([4, 6, 8, 10,12,14,18,20], '*', 1, 3));
// => [4, "*", "*", 10, 12, 14, 18, 20]


Приступить
  • Вопрос задан
  • 261 просмотр
Решения вопроса 2
profesor08
@profesor08 Куратор тега JavaScript
Challenge accepted!

function fill(array, filler, start, end) {
  return array.fill(filler, start, end);
}
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Вы же смотрели исходники lodash'евской реализации? baseFill() и fill() У них топорно:
while (start < end) {
    array[start++] = value;
}

Пропустили возможность отрицательных индексов.
Полагаетесь на возможно отсутствующую поддержку ES6 – все эти Array.fill(), ...filler
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы