能否给我一个提示,尝试将空格符号('')替换为('-')会出错吗?
这是我的代码:
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']));
答案 0 :(得分:3)
.replace
不会改变原始字符串-字符串是不可变的,因此您必须明确分配使用replace
的结果才能起作用。但是,.map
在这里更合适,因为您要将一个数组转换为另一个数组:
function hypernateAndLowerCase(strings) {
return strings.map(string => string.replace(' ', '-').toLowerCase());
}
console.log(hypernateAndLowerCase(['HELLO WORLD', 'HELLO YOU']));
请注意,将字符串传递到.replace
表示最多最多将替换一次出现的字符串。如果要替换所有所有事件,请使用全局正则表达式。
答案 1 :(得分:2)
您可以将功能简化为遵循
function hypernateAndLowerCase(strings) {
return strings.map(v => v.replace(/ /g, "-").toLowerCase());
}
console.log(hypernateAndLowerCase(['HELLO WORLD', 'HELLO YOU']));
答案 2 :(得分:2)
您可以使用.map()
和.replace()
方法。在正则表达式中使用\s+
将使您可以用连字符替换一个或多个空格。
let hypernateAndLowerCase = (data) => data.map(
str => str.replace(/\s+/g, '-').toLowerCase()
);
console.log(hypernateAndLowerCase(['HELLO WORLD', 'HELLO YOU', 'HELLO WORLD']));
答案 3 :(得分:1)
我在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, '-');
。替换仅替换第一个匹配项。
答案 4 :(得分:1)
仅执行"strings[i].replace(' ', '-');"
不会做任何事情,您需要重新分配每个strings[i]
的值。因此,将strings[i].replace(' ', '-')
替换为strings[i] = strings[i].replace(' ', '-');