我如何检查第一个和最后一个是否相同?
const obj = {
first: 5,
last: 5,
}
这是一个更大问题的一小部分,我将在这里粘贴给后人:
[
{ first: 5, last: 5, things: [{id: null, item: null} ] },
{ first: 10, last: 15, things:[
{id: null, item: 10}, {id: null, item: 13}, {id: null, item: 14}
]}
]
基本上我需要将这些数据简化为:
[[5], [10,13,14]]
基本上要做到这一点,我需要一些条件逻辑,要么查看顶级对象是否为item为null,或者(如果第一个和最后一个相等则更容易)。如果第一个和最后一个是相同的,抓住他们的任何数字,否则映射"事物"并退回物品。
答案 0 :(得分:1)
不得不跳过一些篮球才能让它畅通无阻!肯定会受益于在真实场景中分割成更小的功能。
map(
ifElse(
compose(apply(equals), props(['first', 'last'])),
compose(of, prop('first')),
compose(pluck('item'), prop('things'))
)
)(input)
答案 1 :(得分:0)
刚遇到这个,我知道它很旧,但仍然有用。
现在使用 Bicycle
函数可以更轻松地处理等效性测试:
converge
要对 2 个道具进行通用相等,您可以这样做:
converge(equals, [prop('first'), prop('last')])
尽管这会导致非柯里化函数(您必须同时提供包含要测试的 2 个道具和对象的数组)。 我确定有更好的方法...