gpt4 book ai didi

javascript - 创建一个接受函数并返回带有时间戳的函数的函数

转载 作者:行者123 更新时间:2023-11-30 19:29:32 24 4
gpt4 key购买 nike

创建一个接受函数并返回函数的函数 dateStamp。返回的函数将接受传入函数接受的任何参数,并返回一个带有 date 键的对象,其值为今天的日期(不包括时间),表示为人类可读的字符串(请参阅 Date转换方法的对象),以及包含调用传入函数的结果的 output 键。

我的代码如下:

const dateStamp = (inputFunc) => {

let todayDate = new Date()
console.log(todayDate)

let newObj = {};

return function (num) {
newObj.date = todayDate;
newObj.output = inputFunc(num);
return newObj;
}
}

// Uncomment these to check your work!
const stampedMultBy2 = dateStamp(n => n * 2);

console.log(stampedMultBy2(4)); // should log: { date: (today's date), output: 8 }
console.log(stampedMultBy2(6)); // should log: { date: (today's date), output: 12 }

我的代码未通过两个测试规范:

enter image description here

我的问题是:

  1. how do I take timestamp out of current date
  2. why is last spec failing?

最佳答案

1) 对于第一个错误,可以使用Date.toDateString()只获取今天日期的日期部分(没有时间)。

2) 我认为第二个错误与您没有考虑到返回的函数可以接受多个变量参数这一事实有关。为了解决这个问题,您可以将其声明为:

return function (...args) { ... };

然后,在调用接收到的函数时使用inputFunc(...args)。总之,您可以采用下一种方法:

const dateStamp = (inputFunc) =>
{
let todayDate = new Date();

return (...args) =>
{
return {
date: todayDate.toDateString(),
output: inputFunc(...args)
}
}
}

const stampedMultBy2 = dateStamp(n => n * 2);
console.log(stampedMultBy2(4));
console.log(stampedMultBy2(6));

const stampedMax = dateStamp((x, y) => Math.max(x, y));
console.log(stampedMax(-5, 6));
console.log(stampedMax(1, 4));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

您甚至可以使用箭头符号以这种方式缩短dateStamp 函数:

const dateStamp = (inputFunc) => (...args) =>
({date: (new Date()).toDateString(), output: inputFunc(...args)});

关于javascript - 创建一个接受函数并返回带有时间戳的函数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56569382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com