寻找一些帮助解决问题,因为我是非常新的Javascript。
我想要写一个函数来记录反馈分数,如下面的代码所示。我想要一个带有嵌套数组的数组,如果给出的分数低于3分,它应该会增加negative属性,如果它在4-6范围内,那么neutral属性应该增加,当它在7-10范围时,positive应该会增加。
我继续简单地在控制台日志中接收
{positive: 0, negative: 0, neutral: 0} 这显然不是预期的产出。怎么啦?
function gatherFeedback(feedbackArray) {
let result = {
positive: 0,
negative: 0,
neutral: 0
};
if (feedbackArray > 0) {
for (let i = 0; i < feedbackArray; i++) {
if (feedbackArray[i][1] >= 7) {
result.positive++
} else if (feedbackArray[i][1] <= 3) {
result.negative++
} else if (feedbackArray[i][1] > 3 && feedbackArray < 7) {
result.neutral++
}
}
}
return result;
}
console.log(gatherFeedback([
['feedback1', 10],
['feedback2', 3],
['feedback3', 6]
]))
发布于 2022-08-09 12:56:09
您的主要问题是这一行:
if(feedbackArray > 0){当您尝试将数组与整数进行比较时,数组首先被转换为字符串,在本例中,该字符串将产生:
"feedback1,10,feedback2,3,feedback3,6"将其与0进行比较,将产生false (请参见说明这里的原因),这样您的循环就不会运行。同样的问题也适用于下一行:
i < feedbackArray使用for...of循环就更简单了(注意,您还可以简化您的if/else结构):
function gatherFeedback(feedbackArray) {
let result = {
positive: 0,
negative: 0,
neutral: 0
};
for (let f of feedbackArray) {
if (f[1] >= 7) {
result.positive++
} else if (f[1] > 3) {
result.neutral++
} else {
result.negative++
}
}
return result;
}
console.log(gatherFeedback([
['feedback1', 10],
['feedback2', 3],
['feedback3', 6]
]))
发布于 2022-08-09 12:56:02
使用.length数组属性:
function gatherFeedback(feedbackArray) {
let result = {
positive: 0,
negative: 0,
neutral: 0
};
if (feedbackArray.length > 0) {
for (let i = 0; i < feedbackArray.length; i++) {
if (feedbackArray[i][1] >= 7) {
result.positive++
} else if (feedbackArray[i][1] <= 3) {
result.negative++
} else if (feedbackArray[i][1] > 3 && feedbackArray < 7) {
result.neutral++
}
}
}
return result;
}
console.log(gatherFeedback([
['feedback1', 10],
['feedback2', 3],
['feedback3', 6]
]))发布于 2022-08-09 12:57:28
将您的代码更改为
function gatherFeedback (feedbackArray) {
let result = {positive: 0, negative: 0, neutral: 0};
if(feedbackArray.length > 0){
for(let i = 0; i < feedbackArray.length; i++) {
if(feedbackArray[i][1] >= 7) {
result.positive++
} else if(feedbackArray[i][1] <= 3){
result.negative++
} else if (feedbackArray[i][1] > 3 && feedbackArray[i][1] < 7) {
result.neutral++
}
}
}
return result;
} https://stackoverflow.com/questions/73292063
复制相似问题