skå*_*fan 3 javascript arrays object ecmascript-6 ramda.js
const data = [
{id: "001", failedReason: [1000]},
{id: "001", failedReason: [1001]},
{id: "001", failedReason: [1002]},
{id: "001", failedReason: [1000]},
{id: "001", failedReason: [1000, 1003]},
{id: "002", failedReason: [1000]}
];
Run Code Online (Sandbox Code Playgroud)
给定这个数据集,如果我想返回具有唯一id值的对象数组,那么我可以使用 Lodash 简单地调用:
_.uniqBy(data, 'id')
我知道使用此方法仅保留元素/匹配的第一次出现。
上面将返回:
[ { id: '001', failedReason: [ 1000 ] },
{ id: '002', failedReason: [ 1000 ] } ]
Run Code Online (Sandbox Code Playgroud)
我是 Ramda 的新手。Ramda one-liner 与此等效的是什么?
R.uniqBy(???, data)
Ramda 不采用 lodash 风格,允许字符串作为函数的替代来获取对象的命名属性。所以只需传递一个函数:
const data = [
{id: "001", failedReason: [1000]},
{id: "001", failedReason: [1001]},
{id: "001", failedReason: [1002]},
{id: "001", failedReason: [1000]},
{id: "001", failedReason: [1000, 1003]},
{id: "002", failedReason: [1000]}
];
console.log(uniqBy(prop('id'), data))Run Code Online (Sandbox Code Playgroud)
<script src="https://bundle.run/ramda@0.26.1"></script><script>
const {uniqBy, prop} = ramda </script>Run Code Online (Sandbox Code Playgroud)