件数>30?200:件数>25?100:75
期望结果: ['件数','>','30','?','200',':','件数','>','25','?','100',':','75']
件数>30?200:件数>25?100:75
期望结果: ['件数','>','30','?','200',':','件数','>','25','?','100',':','75']
const expression = "件数>30?200:件数>25?100:75";
const array = [];
let buffer = '';
// 遍历条件表达式中的每个字符,如果当前字符是 ? 或 :,
// 则将 buffer 中的内容去除首尾空格后,加入到 array 中,
// 并将当前字符也加入到 array 中;否则,将当前字符加入到 buffer 中。
// 循环结束后将 buffer 中的内容去除首尾空格后,加入到 array 中
for (let i = 0; i < expression.length; i++) {
const char = expression[i];
switch (char) {
case '?':
case ':':
array.push(buffer.trim());
array.push(char);
buffer = '';
break;
default:
buffer += char;
break;
}
}
array.push(buffer.trim());
console.log(array); // ['件数','>','30','?','200',':','件数','>','25','?','100',':','75']
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.3k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
5 回答3.8k 阅读
你可以通过正则表达式将这个三元表达式解析成数组:
除了使用正则表达式之外,还有其他方法可以将三元表达式解析成数组。以下是两种替代方法:
字符遍历法
split() 和 reduce() 组合法