function solution(expression) {
let answer = [];
const cases = [
['-', '*', '+'],
['-', '+', '*'],
['*', '-', '+'],
['*', '+', '-'],
['+', '-', '*'],
['+', '*', '-']
]
for(let i = 0; i <cases.length; i++) {
let arr = expression.split(/(\D)/)
for(let j = 0; j<3; j++) {
while(arr.includes(cases[i][j])) {
let index = arr.indexOf(cases[i][j])
arr.splice(index-1,3,(new Function(`return ${arr.slice(index-1,index+2).join('')}`))());
}
}
answer.push(arr);
}
return Math.max(...answer.map(e => Math.abs(e)));
}
split 메소드에 정규식을 활용할 수 있으며 정규식에 괄호를 사용할 경우 괄호내의 문자도 split된 배열에 포함된다.
자바스크립트 코드를 문자열 방식으로 사용하고 싶을 경우 eval을 사용할 수 있는데 보안에 위협이 있으므로 사용하지 않는 것이 좋다. ex) eval('2+2') = 4;
이를 대체하는 방식으로 (new Function('return 코드작성'))()을 사용할 수 있다.