Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript—如何在整个数组中替换空格_Javascript_Replace - Fatal编程技术网

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