为什么map方法无法改变数组?

Mil*_*lan -5 javascript

我有一个以下简单的功能:

function shiftCase2(string) {
    temp = string.split('');
    temp.map(function(x) {
        if (x == x.toUpperCase()) {
            x = x.toLowerCase();
        }
        if (x == x.toLowerCase()) {
            x = x.toUpperCase();
        }
    })
    temp = temp.join("");
    console.log(temp);
}
Run Code Online (Sandbox Code Playgroud)

它应该遍历数组的每个元素,如果字符是大写,则将其更改为小写,反之亦然.比如shiftCase2("TEST string to USE");应该给我回来"test STRING TO use".

我无法弄清楚为什么它不起作用,只是将我的输入返回给我未经修改?

Die*_*ria 5

.map()是一种所谓的纯粹功能.这意味着它不会修改您的输入,而是会生成新的输出.

你必须这样做:

temp = temp.map(function(x) {
    if (x == x.toUpperCase()) {
        return x.toLowerCase();
    }
    if (x == x.toLowerCase()) {
        return x.toUpperCase();
    }
})
Run Code Online (Sandbox Code Playgroud)

我建议查看文档以了解它是如何工作的.