我有一个长的 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]
但这浪费了内存,因为我只需要第一次和最后一次出现的位置。有什么好的想法吗?谢谢。
我有一个长的 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]
但这浪费了内存,因为我只需要第一次和最后一次出现的位置。有什么好的想法吗?谢谢。
str.slice(0, str.indexOf(','))
并且
str.slice(str.lastIndexOf(',')+1) // 1==','.length
实际上,这并不会浪费太多空间,因为 Javascript 占用电脑内存非常少。除非字符串非常长达到了几 GB,否则您不需要担心它。要获取第一个和最后一个,只需执行以下操作:
arr=str.split(',');
var first=arr.shift(); //or arr[arr.length-1];
var last=arr.pop(); //or arr[0];
我有一长串ISO日期
假设这些日期都使用时区Z
,年份 >= 0
,并且间隔和引用方式相同,你甚至不需要搜索,
,因为它们的长度将是相同的。
var first = str.slice(1, 25),
last = str.slice(-25, -1);
有一个使用substr
/substring
的jsperf
是最优化的方法。请参见:
https://jsperf.com/slice-vs-substr-vs-substring-vs-split-vs-regexp
shift()
和pop()
从数组中获取第一个和最后一个元素。这种方法在客户端计算机上可能只使用了0.00000000000000000001%的内存,所以不用担心。 - adeneostr
进行分割 -str = str.split(',');
(假设您不需要再次使用它)。不要忘记您可能还需要修剪shift()
和pop()
中的空格。 - David Gard