Javascript—如何在整个数组中替换空格
我有一个小字符串数组,但是我从程序外部收到了数据,所以我不知道数据是如何格式化的。最具体地说,我遇到了很多情况,在这些情况下,我在每个字符串前后都有多余的空白 问题是,我有一个大数组。虽然我可以这样做:Javascript—如何在整个数组中替换空格,javascript,replace,Javascript,Replace,我有一个小字符串数组,但是我从程序外部收到了数据,所以我不知道数据是如何格式化的。最具体地说,我遇到了很多情况,在这些情况下,我在每个字符串前后都有多余的空白 问题是,我有一个大数组。虽然我可以这样做: for (var z = 0; z < myArray.length; z++) { myArray[z] = myArray[z].replace(/(^\s+|\s+$)/g,''); } 我想知道什么是更好的方法,或者这些方法是最好的吗?是否有一个批处理函数来执行此操作 两个建
for (var z = 0; z < myArray.length; z++) {
myArray[z] = myArray[z].replace(/(^\s+|\s+$)/g,'');
}
我想知道什么是更好的方法,或者这些方法是最好的吗?是否有一个批处理函数来执行此操作 两个建议:
- 在任何模糊的现代浏览器上,我都不会使用
,而是使用replace
,它可以删除字符串开头和结尾的空白trim
修剪 - 除非数组包含数以百万计的条目,否则我可能会使用
,但是您的map
循环很好<代码>映射基于回调函数的结果创建一个新数组for
myArray = myArray.map(str => str.trim());
// or ES5:
myArray = myArray.map(function(str) { return str.trim(); });
但是,如果您不想创建新数组,则使用trim
的for
就可以了,不过您可以缓存myArray.length
以避免在每次迭代中重新检索它:
for (var i = 0, len = myArray.length; i < len; ++i) {
myArray[i] = myArray[i].trim();
}
for(变量i=0,len=myArray.length;i
(如果您针对的是现代环境,我可能会使用let
而不是var
,因此I
和len
是循环的局部。现代引擎现在优化得很好,但它们并不总是很早就优化了。)两个建议:
- 在任何模糊的现代浏览器上,我都不会使用
,而是使用replace
,它可以删除字符串开头和结尾的空白trim
修剪 - 除非数组包含数以百万计的条目,否则我可能会使用
,但是您的map
循环很好<代码>映射基于回调函数的结果创建一个新数组for
myArray = myArray.map(str => str.trim());
// or ES5:
myArray = myArray.map(function(str) { return str.trim(); });
但是,如果您不想创建新数组,则使用trim
的for
就可以了,不过您可以缓存myArray.length
以避免在每次迭代中重新检索它:
for (var i = 0, len = myArray.length; i < len; ++i) {
myArray[i] = myArray[i].trim();
}
for(变量i=0,len=myArray.length;i
(如果你瞄准的是现代环境,我可能会使用
let
而不是var
,因此I
和len
是循环的局部。现代引擎现在优化得很好,它们并不总是很早就优化了。)更短是的,但更好?不,不是真的。为什么不使用trim()
您可以使用trim()
和lTrim()
仅从字符串的开头和结尾修剪空白,否则如果需要在字符串内部修剪,请使用正则表达式。在优化方面,您将获得的最快速度是使用而循环(比for循环稍快)使用递减计数器向后工作直到0,否则您也可以使用map
而不是foreach。不管怎样,如果你有工作,坚持下去,如果它在主线程上成为性能问题,将它转移到工作进程(无论是在node.js还是在browser中,你都有选择)@r3wt反向while循环更快是一个神话,除非你证明它。@r3wt-trim
,在JavaScript中,它是trimStart
和trimEnd
(还有较旧的非标准trimleet
和trimrright
,它们在web浏览器的JavaScript引擎中是正式的别名)。(JS没有lTrim
)更短是的,但更好?不,不是真的。为什么不使用trim()
您可以使用trim()
和lTrim()
仅从字符串的开头和结尾修剪空白,否则如果需要在字符串内部修剪,请使用正则表达式。在优化方面,您将获得的最快速度是使用而循环(比for循环稍快)使用递减计数器向后工作直到0,否则您也可以使用map
而不是foreach。不管怎样,如果你有工作,坚持下去,如果它在主线程上成为性能问题,将它转移到工作进程(无论是在node.js还是在browser中,你都有选择)@r3wt反向while循环更快是一个神话,除非你证明它。@r3wt-trim
,在JavaScript中,它是trimStart
和trimEnd
(还有较旧的非标准trimleet
和trimrright
,它们在web浏览器的JavaScript引擎中是正式的别名)。(JS没有lTrim
)你需要很长一段时间才能使用polyfil进行修剪,我建议不要使用polyfil进行修剪,因为它会膨胀。@StevenStark-我不会担心trim
的膨胀,但你说得对,你必须向后走多远!当它被添加时,我记错了(我想的是ES2015,而不是ES5)。删除了所有关于polyfilling的提及。现在只有非常小众的软件需要支持IE<11。我在trim上遇到了一些问题,实际上,我是在拾取空白。。。很烦人,我根本不知道为什么会这样。我看了看单个字符的ascii码,它们都是32。我会继续努力的。谢谢您需要使用polyfil进行修剪,这需要很长一段时间,我建议不要使用polyfil进行修剪。@StevenStark-我不会担心trim
的膨胀,但您必须向后走多远,这是对的!当它被添加时,我记错了(我想的是ES2015,而不是ES5)。删除了所有关于polyfilling的提及。现在只有非常小众的软件需要支持IE<11。我在trim上遇到了一些问题,实际上,我是在拾取空白。。。很烦人,我根本不知道为什么会这样。我看了看ind