我有一个小字符串数组,但我从程序外部接收到该数据,所以我不知道数据是如何格式化的。最具体地说,我遇到了很多情况,每个字符串之前和之后都有无关的空格。
问题是,我有一个很大的数组。虽然我可以做这样的事情:
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);
我想知道什么是更好的方法,或者这些是最好的方法吗?有没有一个批处理函数可以做到这一点?
最佳答案
两个建议:
- 在任何现代浏览器上,我都会使用
trim
,而不是replace
,它会删除字符串开头和结尾的空格。 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
是本地循环。现代引擎现在可以很好地优化这一点,而早期引擎并不总是这样。)
关于Javascript - 如何替换整个数组中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55030906/