我有一个像这样的js数组:
let data = [{status:"stay",points:[1,2,3,4,5]}, {status:"move",points:[1,2,3,4,5]},{status:"stay",points:[1,2,3,4,5]}]
我想做一些模式匹配,这是我的代码:
switch (data){
case [{status:"move",_},{status:"stay",_},{status:"move",_}]:
console.log("successfully!")
}
而且我不关心点数组,但在js中占位符" _"不存在,实际上我知道其他方法可以做到这一点,但如果我们只使用switch-case,它可以解决吗?
我是js的新手,anynoe知道怎么做吗?
答案 0 :(得分:2)
如果我理解您正在尝试正确执行的操作,则可以尝试将数组减少为字符串,然后在switch语句中使用该字符串。像这样:
var actionString = ""
data.forEach(function(datum) {
actionString += datum.status + ' ';
});
// Remove extra space at the end
actionString.trim();
console.log(actionString); // "move stay move"
然后你的switch语句是:
switch(actionString) {
case "move stay move":
console.log('success!');
break;
case "stay move stay":
console.log('failure?');
break;
/* etc */
}
答案 1 :(得分:1)
尝试
switch (data.status){
case "stay":
case "move":
console.log("successfully!")
break;
}
文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch