JavaScript 问题。我正在学习 for 循环和数组如何与方法一起工作,不知道为什么我在控制台中收到 NAN 消息

标签 javascript arrays loops methods

到目前为止,这是我整理的代码,然后是我遇到的错误。

var johnFamily;

johnFamily = {

    tipCalc: function() {

        var percentage;

        johnFamily.fullName = 'John Smith';

        johnFamily.bills = [124, 48, 268, 180, 42];

        johnFamily.tips = [];
        johnFamily.totalBills = [];

        for (var i = 0; i < johnFamily.bills.length; i++) {

            if (johnFamily.bills[i] < 50) {
                percentage = .2;
            } else if (johnFamily.bills[i] > 50 && johnFamily.bills[i] < 200) {
                percentage = .15;
            } else if (johnFamily.bills[i] > 200) {
                percentage = .1;
            } else {
                console.log(johnFamily.fullName + ' ' + 'did not leave a tip.');
            }

            johnFamily.tips[i] = johnFamily.bills * percentage;
            johnFamily.totalBills[i] = johnFamily.bills + johnFamily.bills * percentage;
        }
    }
};

johnFamily.tipCalc();
console.log(johnFamily);

但是,这就是我将其记录到控制台时得到的结果

tips: (5) [NaN, NaN, NaN, NaN, NaN]

totalBills: (5) ["124,48,268,180,42NaN", "124,48,268,180,42NaN", "124,48,268,180,42NaN", "124,48,268,180,42NaN", "124,48,268,180,42NaN"]

它应该创建新属性并通过该方法向它们添加值。

最佳答案

这就是你的问题

johnFamily.bills * percentage;

johnFamily.bills 是一个数组,数组乘以数字没有任何意义,因此您得到 NaN。您可能打算这样做,以便计算特定账单的特定时间。

johnFamily.bills[i] * percentage;

关于JavaScript 问题。我正在学习 for 循环和数组如何与方法一起工作,不知道为什么我在控制台中收到 NAN 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59587041/

相关文章:

javascript - 如何强制更改事件发生在选择元素上

MySQL 连接,查询未结束(循环?)

javascript - 如何让 MongoDB 找到嵌套的 json 作为数组返回?

javascript - 如何跳过某些 div 在上下文中进行搜索?

javascript - 仅使用 Y 数小于 X 的所有可能性?

javascript - 将二维数组从 PHP 转换为 JS

c++ - 程序编译后崩溃

javascript - 大范围输入的素数之和

Javascript XML - 如何返回空值

c# - 将返回类型转换为数组 C#