Javascript 为什么它是未定义的?

Javascript 为什么它是未定义的?,javascript,Javascript,当我运行流时,它抛出未定义的 const咖啡=[ “淡哥伦比亚烤肉”、“夏威夷黑烤肉”、“危地马拉混合中等烤肉”, “马达加斯加浓咖啡烤”、“牙买加深蓝色”、“牙买加中烤”, “萨尔瓦多罗布斯托轻咖啡”、“巴厘岛浓咖啡烤肉” ] 设选择器=0 const choiceLight=[] const choiceMedium=[] const choicedak=[] 用于(咖啡的恒烤){ 如果(烘烤,包括(“清淡”)){ 精选灯光。推(烤) log(“我要“+choiceLight[selecto

当我运行流时,它抛出未定义的

const咖啡=[
“淡哥伦比亚烤肉”、“夏威夷黑烤肉”、“危地马拉混合中等烤肉”,
“马达加斯加浓咖啡烤”、“牙买加深蓝色”、“牙买加中烤”,
“萨尔瓦多罗布斯托轻咖啡”、“巴厘岛浓咖啡烤肉”
]
设选择器=0
const choiceLight=[]
const choiceMedium=[]
const choicedak=[]
用于(咖啡的恒烤){
如果(烘烤,包括(“清淡”)){
精选灯光。推(烤)
log(“我要“+choiceLight[selector]+”并喝黑咖啡”)
}其他条件(烤熟,包括(“中等”)){
精选中餐推(烤)
log(“我将使用“+choiceMedium[selector]+”并只添加奶油”)
}else if(烘焙。包括(“深色”)| |烘焙。包括(“浓缩咖啡”)){
精选烤肉推(烤)
log(“我要“+choiceDark[selector]+”并添加奶油和糖”)
}
选择器++
}
/*
我要清淡的哥伦比亚烤肉,喝黑的
我要未定义的,加奶油和糖
我要未定义的,只加奶油
我要未定义的,加奶油和糖
我要未定义的,加奶油和糖
我要未定义的,只加奶油
我要不加定义的酒,喝黑的
我要未定义的,加奶油和糖

*/
您正在将数据推送到另一个数组中。Push将在最后一个数据之后进行Push。所以索引将不一样。 例如:在第二个数据中,您推入
choiceMedium
,因此索引将为
0
,而
选择器将为
1
。因此
未定义

正确实施:

const咖啡=[
“清淡的哥伦比亚烤肉”,
“夏威夷黑烤肉”,
“危地马拉混合中烤”,
“马达加斯加浓咖啡烤肉”,
“牙买加深蓝色”,
“牙买加中烤”,
“萨尔瓦多罗布斯托之光”,
“巴厘浓缩咖啡烤肉”,
];
设选择器=0;
常数choiceLight=[];
const choiceMedium=[];
const choicedak=[];
用于(咖啡的恒烤){
如果(烘烤,包括(“清淡”)){
精选灯。推(烤);
console.log(
“我要“+烤+”然后黑喝”
);
}其他条件(烤熟,包括(“中等”)){
精选中餐。推(烤);
console.log(
“我要“+烤+”只加奶油”
);
}else if(烘焙。包括(“深色”)| |烘焙。包括(“浓缩咖啡”)){
精选烤肉。推(烤);
console.log(
我要“+烤+”加奶油和糖
);
}
选择器++;
}
。作为控制台{
最小高度:100%!重要;
}
.作为控制台行{
颜色:蓝色!重要;

}在第一次迭代中,
选择器
等于零。没问题。将给定的变体附加到选择数组中,并打印其0索引元素(第一个位置)

在第二次迭代中,
选择器
等于1。除非它与previus迭代属于同一个choice数组,否则您将把它附加到一个空数组中,并请求它的1索引元素(因此,位于第二位置的元素)。它不存在


在任何情况下,如果您发现某个品种与前一个品种不属于同一个选择,那么您的数组索引将永远不会再与选择器值匹配。

每次循环时,您都会递增
选择器,但您只会将一个项目推入每个数组。因此,每个项目将位于每个数组中的位置0。如果您将
selector
保持在0,它应该可以工作

为什么您需要使用“selector”?
你可以点击“烤”并打印“烤”评论

如前所述,您有单独的列表,但在所有循环迭代中使用一个索引“选择器”


如果您想使用“选择器”,您可以在跟踪的每种烘焙类型中使用一个选择器:ltSelector、mdSelector、dkSelector。

Hey!代码片段中有一个语法错误-我认为您需要将结果(我将…)转换为注释。这个问题也可能得益于一个更具描述性的标题:)哇,谢谢你,它奏效了。我无缘无故地把这件事搞复杂了,还加了一些我不需要的东西。再次感谢。