【问题标题】:How to replace certain symbol in array?如何替换数组中的某些符号?
【发布时间】:2019-03-04 07:39:42
【问题描述】:
你能告诉我尝试将空格符号 ('') 替换为 ('-') 有什么问题吗?
这是我的代码:
function hypernateAndLowerCase(strings)
{
let newArray = [];
for (let i = 0; i < strings.length; i++) {
if (strings[i].indexOf(' ')){
strings[i].replace(' ', '-');
}
newArray.push(strings[i].toLowerCase());
}
return newArray;
}
console.log(hypernateAndLowerCase(['HELLO WORLD', 'HELLO YOU']));
【问题讨论】:
标签:
javascript
html
arrays
function
variables
【解决方案1】:
.replace 不会改变原始字符串 - 字符串是不可变的,因此您必须明确指定使用 replace 的结果才能使其工作。但是,.map 在这里更合适,因为您想将一个数组转换为另一个数组:
function hypernateAndLowerCase(strings) {
return strings.map(string => string.replace(' ', '-').toLowerCase());
}
console.log(hypernateAndLowerCase(['HELLO WORLD', 'HELLO YOU']));
请注意,将字符串传递给.replace 将意味着最多只会替换一次。如果您希望替换所有次出现,请改用全局正则表达式。
【解决方案2】:
您可以将您的功能简化为以下功能
function hypernateAndLowerCase(strings) {
return strings.map(v => v.replace(/ /g, "-").toLowerCase());
}
console.log(hypernateAndLowerCase(['HELLO WORLD', 'HELLO YOU']));
【解决方案3】:
您可以使用.map() 和.replace() 方法。在正则表达式中使用\s+ 将允许您用连字符替换一个或多个空格。
let hypernateAndLowerCase = (data) => data.map(
str => str.replace(/\s+/g, '-').toLowerCase()
);
console.log(hypernateAndLowerCase(['HELLO WORLD', 'HELLO YOU', 'HELLO WORLD']));
【解决方案4】:
只做"strings[i].replace(' ', '-');" 不会做任何事情,您需要重新分配每个strings[i] 的值。所以将strings[i].replace(' ', '-')替换为strings[i] = strings[i].replace(' ', '-');
【解决方案5】:
我在http://jsfiddle.net/o0bq2rhg/创建了一个小提琴
function hypernateAndLowerCase(strings) {
let newArray = [];
for (let i = 0; i < strings.length; i++) {
if (strings[i].indexOf(' ') > -1) {
strings[i] = strings[i].replace(/ /g, '-');
}
newArray.push(strings[i].toLowerCase());
}
return newArray;
}
console.log(hypernateAndLowerCase(['HELLO WORLD', 'HELLO YOU']));
您必须将替换函数的结果存储回strings[i]。我已经用正则表达式替换了该函数,因此您可以一次替换所有空格:trings[i].replace(/ /g, '-');。 Replace 只替换第一个匹配项。