Javascript 为什么我的带有switch(true)和Array.concat()的代码不';我不能正常工作

Javascript 为什么我的带有switch(true)和Array.concat()的代码不';我不能正常工作,javascript,arrays,concat,Javascript,Arrays,Concat,//JavaScript: 函数concatarray(){ 最近完成的风险值=[“rc1”、“rc2”]; var upcomingActivities=[]; 风险值决策要求=[]; var记录=[]; 开关(真){ 案例(最近完成。长度>0): 记录。混凝土(最近完成); console.log(“recentlyCompleted.length>0”); 控制台日志(记录); 案例(upcomingActivities.length>0): 记录:concat(升级活动); consol

//JavaScript:
函数concatarray(){
最近完成的风险值=[“rc1”、“rc2”];
var upcomingActivities=[];
风险值决策要求=[];
var记录=[];
开关(真){
案例(最近完成。长度>0):
记录。混凝土(最近完成);
console.log(“recentlyCompleted.length>0”);
控制台日志(记录);
案例(upcomingActivities.length>0):
记录:concat(升级活动);
console.log(“upcomingActivities.length>0”);
控制台日志(记录);
案例(所需决策。长度>0):
记录。concat(需要决定);
console.log(“decisionsrrequired.length>0”);
控制台日志(记录);
打破
}
document.getElementById(“demo”).innerHTML=JSON.stringify(记录);
var记录2=最近完成的。concat(升级活动)。concat(需要决策);
document.getElementById(“demo2”).innerHTML=JSON.stringify(records2);
}

开关(真)
单击按钮以加入阵列

试试看


A
案例
没有
中断
不会重新计算下一个
案例
是否相等,而只是无条件地运行调用的块。我怀疑这是你想要的。改用多个连续的
if
语句(而不是
if-else
链)-或者如果不关心日志语句,只使用
records2
方法


其次,
concat
创建一个新的数组,它不会通过附加到目标上而改变目标。有关各种解决方案,请参阅或。

您应该查看排列运算符:

var records = [...recentlyCompleted, ...upcomingActivities, ..decisionsRequired]

另外,您的
记录
记录2
总是相同的。

:“switch语句首先计算其表达式的值,然后查找其表达式的值与输入表达式的结果相同的第一个case子句(使用严格比较,=)并将控制权转移到该子句,执行相关语句。(如果多个事例与提供的值匹配,则选择匹配的第一个事例,即使事例彼此不相等。)“在Switch is中,仅允许相等条件。否则使用IF语句。谢谢@Bergi!concat创建了一个新的数组,它不会通过添加正确的数组来改变目标!没有中断的案例不会重新计算下一个案例的相等性,而是无条件地运行块。。。非常感谢你,伯吉!