let data =
[
{
principal: 2500,
time: 1.8
},
{
principal: 1000,
time: 5
},
{
principal: 3000,
time: 1
},
{
principal: 2000,
time: 3
}
]
console.log(data)
function interestCalculator() {
for (let i of data)
if (data[i].principal>=2500 && data[i].time>1 && data[i].time<3){
return "rate = 3"
} else if (data[i].principal>=2500 && data[i].time>=3){
return "rate = 4"
} else if (data[i].principal<2500 && data[i].time<=1 ){
return "rate = 2"
} else {
return "rate = 1"
}
}
我正在尝试编写一个名为“ interestCalculator”的函数,该函数将数组作为单个参数并执行以下操作:
使用以下条件确定适用的费率:
如果委托人大于或等于2500并且时间大于1且小于3,则比率= 3
如果委托人大于或等于2500并且时间大于或等于3,则费率= 4
如果主体小于2500或时间小于或等于1,则比率= 2
否则,比率为1;
但是随后我不断收到错误消息,指出主体未定义
答案 0 :(得分:0)
而不是data [i] .principial,您应该像i.principial一样编写。
这里i
不是索引。
它只是数组中的一个元素。
答案 1 :(得分:0)
当您遍历数组时
for (let i of data) { ... }
i
已经是对象,因此您需要使用i.principal
和i.time
。
如果您想使用i
访问data[i]
th 元素,则需要使用
for (let i = 0, j = data.length; i++; i < j) { ... }
最后,有一点需要指出的是,您在循环内有一些return
语句,因此该函数将仅检查数组中的第一个对象,无论有多少个元素,都将很快返回data
。
答案 2 :(得分:0)
请更新循环语句。使用in
代替of
for (let i in data)
答案 3 :(得分:0)
for循环中没有花括号,“ for of”返回对象(参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of)
function interestCalculator() {
for (let obj of data) {
if (obj.principal>=2500 && obj.time>1 && obj.time<3){
return "rate = 3"
}
else if (obj.principal>=2500 && obj.time>=3){
return "rate = 4"
}
else if (obj.principal<2500 && obj.time<=1 ){
return "rate = 2"
}
return "rate = 1"
}
}