我有一长串ISO日期:
var str = "'2012-11-10T00:00:00.000Z', '2012-11-11T00:00:00.000Z', **** '2013-11-12T00:00:00.000Z'";
我只需要获取第一个和最后一个日期。我能做到
var vStr = str.split(',');
vStr[0] and vStr[vStr.length - 1]
但这是一个浪费的记忆,因为我只需要第一次和最后一次出现。想法?谢谢。
答案 0 :(得分:5)
如果你真的从大型数组中遇到性能问题(不要'optimize prematurely),你可以使用slice
来提取单个字符串并indexOf
/ {{3}找到自己的位置:
str.slice(0, str.indexOf(','))
and
str.slice(str.lastIndexOf(',')+1) // 1==','.length
答案 1 :(得分:4)
这真的不是浪费空间,因为Javascript几乎没有占用计算机上的任何内存。除非字符串是千兆字节长,否则我不担心。要获得第一个和最后一个,请执行以下操作:
arr=str.split(',');
var first=arr.shift(); //or arr[arr.length-1];
var last=arr.pop(); //or arr[0];
答案 2 :(得分:2)
我有一长串ISO日期
假设这些都使用时区Z
,年>= 0
并以相同的方式间隔和引用,您甚至不必搜索,
因为它们属于相同的长度。
var first = str.slice(1, 25),
last = str.slice(-25, -1);