我有以下格式的日期持续时间值.

array1 = '[["2022-01-18","2022-01-21"],["2022-02-15","2022-02-17"], ...]';

需要将其转换如下:,

array2 = [ '2022-01-18 - 2022-01-21', '2022-02-15 - 2022-02-17', ... ]

对于所做的工作,我遵循了两种方式,

  1. formattedArray1 = array1.replace(/","/g, " - ").reduce((a, b) => a.concat(b), [])

这给了我一个错误:

好的.reduce不是一个函数

  1. formattedArray2 = [].concat.apply([], array1.replace(/","/g, " - "));

对非对象调用CreateListFromArrayLike

若能解决这个问题,我们将不胜感激!

推荐答案

这里有一个序列化为JSON的array.

您可以将其parse个数组,然后将其映射到所需的值

const array1 = '[["2022-01-18","2022-01-21"],["2022-02-15","2022-02-17"]]';

const arr = JSON.parse(array1);
const array2 = arr.map(([from, to]) => `${from} - ${to}`);
console.log(array2);


如果你(像我一样)对template literal大堆原型加入的表现感到好奇,下面是https://jsbench.me的结果...

模板文字

2678.21 ops/s ± 0.85%
Fastest

大堆原型加入

1150.62 ops/s ± 0.51%
57.04 % slower

benchmark results

Javascript相关问答推荐

如何从隐藏/显示中删除其中一个点击?

如何通过将实例方法的名称传递给具有正确类型的参数的继承方法来调用实例方法?

使用POST请求时,Req.Body为空

覆盖TypeScrip中的Lit-Element子类的属性类型

元素字符串长度html

在不删除代码的情况下禁用Java弹出功能WordPress

<;img>;标记无法呈现图像

背景动画让网站摇摇欲坠

在SuperBase JS客户端中寻址JSON数据

JavaScript将字符串数字转换为整数

我怎样才能得到一个数组的名字在另一个数组?

如何检测当前是否没有按下键盘上的键?

Reaction-在同一页内滚动导航(下拉菜单)

如何动态呈现适合未知屏幕大小的最大数量的表行?苗条的

单击时同时 Select 和展开可访问的行

如何在不获取其子元素的文本内容的情况下获取元素的文本内容?

Iterator.Next不是进行socket.end()调用后的函数

为什么它不记录任何东西在控制台?

使用条件 Select 下拉菜单时更改元素的样式

MarkLogic JavaScript如何获取元素 node 的空间