如何替换数组中的某些符号?

时间:2018-09-28 10:12:39

标签: javascript html arrays function variables

能否给我一个提示,尝试将空格符号('')替换为('-')会出错吗?

这是我的代码:

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']));

5 个答案:

答案 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(' ', '-');