使用 ramda 展平各种数组

戈塞蒂

我有以下包含Date对象的数据结构,其中一些对象嵌套在对象中:

[
  new Date("2018-11-20T09:00:00.000Z"),
  new Date("2018-11-19T09:00:00.000Z"),
  {
    "before": new Date("2018-12-14T00:00:00.000Z")
  }
]

使用 ramda,我想将其展平,使其变为:

[
  new Date("2018-11-20T09:00:00.000Z"),
  new Date("2018-11-19T09:00:00.000Z"),
  new Date("2018-12-14T00:00:00.000Z")
]

我使用的合并审理mapvaluesunnestflatten,但没有运气。理想情况下,我希望它能够工作,以便无论嵌套对象和键名如何,它都会变平。

或德罗里

将 R.when 与 R.has 和 R.prop 结合使用,从在地图中具有该属性的对象中提取值。

const { pipe, map, when, has, prop } = R;

const extractOrVal = (p) => map(when(has(p), prop(p)));

const extractOrValBefore = extractOrVal('before');

const data = [
  new Date("2018-11-20T09:00:00.000Z"),
  new Date("2018-11-19T09:00:00.000Z"),
  {
    "before": new Date("2018-11-14T00:00:00.000Z")
  }
];

console.log(extractOrValBefore(data));
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

如果可以有多个键,或者您不知道键的名称,则可以使用 R.values。这将从对象中提取所有值,而不是日期:

const { chain, values, unless, is } = R;

const extractAndFlatten = chain(unless(is(Date), values));

const data = [
  new Date("2018-11-20T09:00:00.000Z"),
  new Date("2018-11-19T09:00:00.000Z"),
  {
    "before": new Date("2018-12-14T00:00:00.000Z")
  }
];

console.log(extractAndFlatten(data));
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

Scott Christopher 的另一个建议是提取未知/多个道具,并将结果展平:

const { chain, ifElse, is, of, values } = R;

const extractAndFlatten = chain(ifElse(is(Date), of, values));

const data = [
  new Date("2018-11-20T09:00:00.000Z"),
  new Date("2018-11-19T09:00:00.000Z"),
  {
    "before": new Date("2018-12-14T00:00:00.000Z")
  }
];

console.log(extractAndFlatten(data));
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Ramda简化数组的计算

来自分类Dev

使用Ramda减少对象数组

来自分类Dev

使用ramda修改数组中的数据

来自分类Dev

使用Ramda重构if语句

来自分类Dev

如何使用Ramda将对象数组映射到单个对象

来自分类Dev

如何使用Ramda从数组中获取偶数和奇数项

来自分类Dev

使用Ramda将对象数组转换为普通对象

来自分类Dev

如何使用ramda库合并两个数组?

来自分类Dev

如何使用Ramda将数组拆分为子列表?

来自分类Dev

如何使用Ramda将对象数组映射到单个对象

来自分类Dev

如何使用数组项预加载Ramda咖喱函数?

来自分类Dev

JavaScript数组使用if语句展平

来自分类Dev

如何展平这种数组?

来自分类Dev

使用Ramda处理异步编程

来自分类Dev

展平数组,但使用子数组作为基础

来自分类Dev

如何使用Ramda.js连接数组数组中的字符串

来自分类Dev

使用 Ramda 合并由中间数组连接的两个数组

来自分类Dev

PHP多维数组可使用KEY进行展平

来自分类Dev

使用Underscore,如何递归地展平对象数组?

来自分类Dev

在JavaScript中使用递归展平嵌套数组

来自分类Dev

在春季使用mongodb聚合展平嵌套数组

来自分类Dev

如何使用数组递归拆分/展平对象

来自分类Dev

使用对象数组将对象中的数据展平

来自分类Dev

如何使用Ramda基于嵌套键对对象数组进行排序?

来自分类Dev

使用Ramda将对象数组与父属性一起映射

来自分类Dev

使用 ramda.js 将嵌套对象数组中的键值与标识符键匹配

来自分类Dev

通过使用 ramda 对所有其他项目进行测试来过滤数组

来自分类Dev

无法使用Typescript和Aurelia导入ramda

来自分类Dev

Ramda:如何使用嵌套对象过滤数据?

Related 相关文章

热门标签

归档