【发布时间】:2016-10-20 05:51:02
【问题描述】:
这个问题纯粹是为了学习目的。 youtube 上的funfunfunction 说
任何列表高阶列表变换都可以写成
Array.reduce()
音频/视频参考:https://youtu.be/Wl98eZpkp-c?t=138。
问题:
纯粹是为了学习如何用Array.reduce()重写Array.every()
这个问题源于我之前的问题here
Javascript 示例:
var approved1 = [
{
dateApproved: new Date(),
id: 1,
},
{
dateApproved: new Date(),
id: 2,
}
];
var approved2 = [
{
dateApproved: null,
id: 1,
},
{
dateApproved: new Date(),
id: 2,
}
];
approved1.every(a => a.dateApproved != null) ? 'APPROVED' : 'PENDING'
// 'APPROVED'
approved2.reduce(every) ? 'APPROVED' : 'PENDING'
// 'PENDING'
我为存储当前传递的值而苦恼。我在哪里存储像Array.every() 这样的“通过”值?
function every(previousValue, currentValue, currentIdx, arr) {
if(previousValue.dateApproved !== null && currentValue.dateApproved !== null) {
return currentValue;
}
}
【问题讨论】:
-
那么,你有什么尝试?
-
@JaromandaX 我会在 2 分钟内更新并 ping。
-
3 点我会在我家的车里 :p
-
@RobG 我认为最终的返回值将是单一的真或假。如果每个测试用例都通过,则确定该值。问题是,Array.every() 将那些中间通过或失败的测试用例存储在哪里。而且,最后只返回一个值?
标签: javascript arrays ecmascript-6 higher-order-functions