我有一个小字符串数组,但是我是从程序外部接收到的数据,所以我不知道数据的格式。最具体地说,在很多情况下,每个字符串前后都有多余的空格。
问题是,我有很多问题。虽然我可以做这样的事情:
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);
我想知道哪种方法更好,还是最好?有批处理功能吗?
答案 0 :(得分:2)
两个建议:
replace
而不是trim
,它会从字符串的开头和结尾删除空格。 trim
是在ES5(2009)中添加的。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
是循环的本地代码。现代引擎会进行优化那么好,他们并不总是那么早。)