类型错误:映射不是函数

Mel*_*art 4 javascript ecmascript-6

我有一个简单的问题,

给定一个由“(”和“)”括号组成的字符串 S,我们添加最小数量的括号(“(”或“)”,以及在任何位置),以便生成的括号字符串有效。

形式上,括号字符串有效当且仅当: 它是空字符串,或者 它可以写成 AB(A 与 B 连接),其中 A 和 B 是有效字符串,或者 它可以写成 (A),其中 A 是有效字符串。给定一个括号字符串,返回我们必须添加以使结果字符串有效的最小括号数量。

这是我在 JS 中的解决方案,

const minAddToMakeValid = S => {
    const stack = [];
    let count = 0;
    S.map(c => {
        if(c === '('){
            stack.push(c);
        }
        else if(c === ')' && stack[stack.length -1] === '('){
            stack.pop();
        }
        else{
            count ++;
        }
    });
    return count + stack.length;

};
const S = "())";
console.log(minAddToMakeValid(S));
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,

TypeError: S.map is not a function
    at minAddToMakeValid (/Users/melissa/Dropbox/js/leetcode-js/bin/921_minAddToMakeParanthesisValid.js:4:7)
    at Object.<anonymous> (/Users/melissa/Dropbox/js/leetcode-js/bin/921_minAddToMakeParanthesisValid.js:19:13)
    at Module._compile (internal/modules/cjs/loader.js:721:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:774:12)
    at executeUserCode (internal/bootstrap/node.js:342:17)
    at startExecution (internal/bootstrap/node.js:276:5)
Run Code Online (Sandbox Code Playgroud)

Viv*_*ick 5

AString不是 an Array:它没有相同的方法。

但是,您可以使用S.split("")获取数组然后map对其进行遍历

  • 这不是我说的:我说它不是一个“Array”,因此它无法访问其方法(例如“map”、“filter”等......) (2认同)