如何分割javascript列表中的各个项目

如何分割javascript列表中的各个项目,javascript,Javascript,输入: dates=[201701201702201703] 我希望输出为[2017-01、2017-02、2017-03] 我尝试在javascript中使用slice方法,但失败了 for (var i in dates) { dates[i].slice(0, 4) + "-" + dates[i].slice(4); } 它失败了。您刚刚忘记了toString(): var日期=[201701、201702、201703]; 对于(变量i=0;ia.toString().replac

输入:
dates=[201701201702201703]

我希望输出为
[2017-01、2017-02、2017-03]


我尝试在javascript中使用slice方法,但失败了

for (var i in dates) {
dates[i].slice(0, 4) + "-" + dates[i].slice(4);
}

它失败了。

您刚刚忘记了
toString()

var日期=[201701、201702、201703];
对于(变量i=0;i
您可以使用和来表示想要的日期

var日期=[201701、201702、201703],
结果=dates.map(a=>a.toString().replace(/(?=..$)/,'-');

控制台日志(结果)当我尝试map方法时,它失败了。。dates.map(函数(value,i){value.toString().slice(0,4)+“-”+value.toString().slice(4);})
for。。。在
中,不建议使用数组。@NinaScholz刚刚指出了一个明显的错误,现在改为
-循环。旁注:“我尝试在javascript中使用slice方法,但失败了”数字不是字符串。你应该知道你正在处理的类型。对于你接下来的问题:不要只说它失败了。指定它是如何失败的,它是否会给您错误的结果?它会引发异常吗?错误信息是什么?如果您这样做了,您可能已经回答了自己的问题,因为控制台应该说:
uncaughttypeerror:dates[i]。slice不是一个函数
它很酷,但是RegExp中的反向引用使代码很难阅读。。。至少对我来说。我想我看到了它在做什么(这两个点是最后两个元素?),但是slice非常清晰。它只是看起来如果右边左边有两个字符,那么就替换它们,或者拆分。这个解决方案在chrome中运行良好,但是在IE中失败。IE不识别result=dates.map(a=>a.toString().split(/(?=..$)/).join('-');它无法识别=>符号。有其他选择吗?@swat,您可以使用经典函数表达式而不是箭头函数,请参见编辑。