Javascript 重写lodash“fill”函数

Javascript 重写lodash“fill”函数,javascript,lodash,Javascript,Lodash,为了训练JS,我重写了lodash的函数。 请把它改写得比我好 //////////////// fill(array, value, [start=0], [end=array.length]) //////////////// 使用从开始到结束(但不包括结束)的值填充数组元素 let array = [1, 2, 3]; function fill (arr, filler, start = 0, end = arguments[0].length) { filler = new

为了训练JS,我重写了lodash的函数。 请把它改写得比我好

//////////////// fill(array, value, [start=0], [end=array.length]) ////////////////
使用从开始到结束(但不包括结束)的值填充数组元素

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]
有没有更优雅的方法来实现这一点?

该方法几乎与lodash的方法相同。主要区别在于它应用于数组的方式

常量fill=arr,…args=>arr.fill…args; console.logfill[1,2,3],'a';//=>['a','a','a'] console.logfillArray3,2;//=>[2, 2, 2] console.logfill[4,6,8,10],'*',1,3;//=>[4, '*', '*', 10]
console.logfill[4,6,8,10,12,14,18,20],“*”,1,3;//=>[4,*,*,10,12,14,18,20]你想使用一个简单的for循环?forlet i=开始;i<结束;i++arr[i]=fillerI不知道本机填充有开始和结束参数。那很有用。