我有一个小字符串数组,但我从程序外部收到了这些数据,所以我不知道数据是如何格式化的。最具体地说,我遇到很多情况,我在每个字符串之前和之后都有无关的空格。
问题是,我有一个很大的阵列。虽然我可以做这样的事情:
for (var z = 0; z < myArray.length; z++) {
myArray[z] = myArray[z].replace(/(^\s+|\s+$)/g,'');
}
要么
myArray.forEach(function(part, index) {
this[index] = this[index].replace(/(^\s+|\s+$)/g,'');
}, myArray);
我想知道什么是更好的方式,还是这些是最好的?有批处理功能吗?
两个建议:
replace
,在任何甚至模糊的现代浏览器上我都使用trim
,它从字符串的开头和结尾删除空格。在ES5(2009年)中添加了trim
。map
,但你的for
循环就好了。 map
根据回调函数的结果创建一个新数组。以下是两个建议的组合:
myArray = myArray.map(str => str.trim());
// or ES5:
myArray = myArray.map(function(str) { return str.trim(); });
但是如果你不想创建一个新的数组,你的for
与trim
就可以了,不过你可以缓存myArray.length
以避免在每次迭代时重新检索它:
for (var i = 0, len = myArray.length; i < len; ++i) {
myArray[i] = myArray[i].trim();
}
(如果你的目标是现代环境,我可能会使用let
而不是var
,所以i
和len
是循环的本地。现代引擎现在很好地优化了它们,而且它们并不总是在早期。)