我在名为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,'')
答案 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
替换所有空格,而不仅仅是空格。
这遍历了每个对象的每个对象。属性并替换每个属性的值。