尝试为interestCalculator编写函数,但我不断收到错误消息

时间:2020-04-07 15:05:22

标签: javascript

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;

但是随后我不断收到错误消息,指出主体未定义

4 个答案:

答案 0 :(得分:0)

而不是data [i] .principial,您应该像i.principial一样编写。 这里i不是索引。 它只是数组中的一个元素。

答案 1 :(得分:0)

当您遍历数组时

for (let i of data) { ... }

i已经是对象,因此您需要使用i.principali.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"            
    }
}
相关问题