将多个空格转换为数组中的一个空格

时间:2017-01-24 02:17:09

标签: javascript

我在名为foo

的对象中有不同数量的元素

事先不知道对象的数量,如何将所有多个空格转换为一个空格?

这样

var foo = [[day_1: "Hello World   "], [day_2:"  Hello World"], [day_3: "Hello World   "], [day_4: "Hello World"], [day_5:"     Hello World   "], [day_6: "Hello World"], [day_7: "Hello  World"]] 

会变成:

var output = [[day_1: "Hello World "], [day_2: " Hello World"], [day_3: "Hello World "], [day_4: "Hello World"], [day_5: " Hello World "], [day_6: "Hello World"], [day_7: "Hello World"]]

到目前为止我已经尝试了这个但是它没有产生预期的输出,因为它应该在每个循环格式中:

foo.replace(/ +(?= )/g,'')

2 个答案:

答案 0 :(得分:0)

因此,如果我理解正确,您希望迭代数组并用一个空格替换所有空白行。这可以这样做:

var output = [];
for (var i = 0; i < foo.length; i++) {
    output.push(foo[i].replace(/ +/g, ' '));
}

除非我遗漏了某些内容,否则你应该在正则表达式中应用正面的预测。

您可以选择以功能样式执行此操作,如下所示:

var output = foo.map(function(part) { return part.replace(/ +/g, ' ') });

答案 1 :(得分:0)

您希望遍历数组并使用单个空格替换所有出现的空格。这可以这样做:

var output = [];
for (var i = 0; i < foo.length; i++) {
    var temp={};
    Object.getOwnPropertyNames(foo[i]).forEach(function(val, idx, array) {        
       temp[val]=foo[i][val].replace(/\s+/g, ' ');
    });
    output.push(temp);
}

您似乎尝试将该方法应用于整个数组,并忘记将其应用于数组中的每个字符串。

另外,仅供参考:

正则表达式中的\s替换所有空格,而不仅仅是空格。

这遍历了每个对象的每个对象。属性并替换每个属性的值。