件数>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']
13 回答13k 阅读
8 回答2.7k 阅读
2 回答5.2k 阅读✓ 已解决
7 回答2.1k 阅读
5 回答1.3k 阅读
3 回答2.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
你可以通过正则表达式将这个三元表达式解析成数组:
除了使用正则表达式之外,还有其他方法可以将三元表达式解析成数组。以下是两种替代方法:
字符遍历法
split() 和 reduce() 组合法