我是编码领域的新手,刚刚开始学习javascript。我试图设计一种表的输出,但无法完成它。这是我要实现的目标
“ Jan-1-Quarter1”和第二行 “ 2月-2-季度1” ...等
我使用了foreach
,if/else
并将它们组合在一起,但是却无法获得输出,可能是因为我们无法在if语句中添加foreach
!有人可以帮我解决这里的问题吗?
const Months = ['jan','Feb']
if (Months = 'Jan'||'Apr'||'Jul'||'Sep') {
Months.forEach(function(Month, index) {
console.log(`${Month}--${index + 1}`)}
} else {
console.log(`${Month}--${index + 1}`)
}
答案 0 :(得分:1)
尚不清楚您要完成什么,但我想提供一些您在代码中看到的内容。由于您是新手,所以我了解您可能还不太熟悉该语言。
首先,if (Months = 'Jan'||'Apr'||'Jul'||'Sep')
无论如何都将始终返回true,因为您犯了三个单独的错误!不用担心,让我为您分解一下。
第一个错误是您在Months ='Jan'中使用单个等号。单等号是所谓的ASSIGNMENT运算符。您将变量Months设置为等于字符串“ Jan”。您正在寻找的是STRICT EQUALITY运算符===,该运算符用于检查两件事是否相等。
请参阅此作为参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators
您的第二个错误是您正在查看整个Months变量,并试图将其值与字符串进行比较。如果您使用过像这样的严格相等:
if (Months === 'Jan')
它仍然会失败,因为Months是一个数组。您需要做的是使用Months.forEach遍历数组的每个元素,然后对每个月进行相等比较。
您的第三个错误是您使用OR运算符||的方式。
让我们看一下将解决前面两个错误的代码:
var months = ['Jan','Feb','Apr','Jul','Sep'];
months.forEach(element => {
if (element === 'Jan' || 'Feb' || 'Mar'){
console.log('Gotcha');
}
});
这将始终返回true,因为将单独评估操作者或操作者所分别进行的操作。为了正确运行测试,您需要在每个部分中单独进行一个相等性测试,并用OR分隔。
运行以下代码片段并查看输出:
var foo = "Hi";
const test1 = (foo === "Boo" || "You");
const test2 = (foo === "Boo" || foo === "You");
console.log(test1);
console.log(test2);
if (test1) {
console.log("This is true??")
}
那么,那里发生了什么?
test1最终被分配了“ You”的值,因为第一部分的计算结果为false,因此它分配了第二部分。
如我们所料,test2是错误的。
但是如果我们在test1上使用“ if”语句(当前设置为字符串“ You”)会发生什么?
为清楚起见,请查看此答案。 why does if("string") evaluate "string" as true but if ("string"==true) does not?
最后,您想要的是这样的东西:
var months = ['Jan','Feb','Apr','Jul','Sep'];
months.forEach(element => {
if (element === 'Jan' || element === 'Feb') {
console.log('woot');
}
});
答案 1 :(得分:0)
您想要这个吗?用所需的数据创建一个数组。然后使用foreach遍历该数组?
var months = ['Jan','Feb','Apr','Jul','Sep'];
months.forEach(element => {
console.log(element + " - " + "quarter1");
});