Javascript 重写lodash“fill”函数
为了训练JS,我重写了lodash的函数。 请把它改写得比我好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
//////////////// 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不知道本机填充有开始和结束参数。那很有用。