2_31_数组练习题_day04_201019

练习一

/*
小明和他家人在泰国旅游,到3个不同的饭店吃饭。账单(bill)分别是124元、48元
和268元
为了给服务员小费(tip),小明创建了一个简单的小费计算器函数(tipCalculator)。如
过账单小于 50 元,他会给账单的 20% 作为小费;如果账单在 50 到 200 之间,他会
给账单的 15% z作为小费;如果账单超过 200 元,他会给账单的 10% 作为小费。
小明想要 2 个数组:
(1) 一个数组包含三个小费(每个账单一个);
(2) 一个数组包含所有三个最终支付金额(账单 + 小费)。
最后把这 2 个数组输出到控制台

方案一:可以声明两个空数组(一个小费、一个总消费),然后循环遍历账单数组。
采用数组索引的方式来计算小费,然后将每一个小费与其账单相加即得到总消费
关键步骤:

const tip = [];
const cost = [];
tip[i] = bill[i] * X%
cost[i] = tip[i] + bill[i]

方案二:可以声明两个空数组(一个小费、一个总消费),函数体内再声明两个
变量(tip、cost),计算小费时就可以直接采用数字方式来计算(tip = bill[i] * X%),
最后将计算得到的结果运用添加元素到数组的知识点(arrayName.push(varName))来添加到
最开始声明的数组中即可。
关键步骤:

const tips = [];
const costs = [];
let tip;           函数体内声明
tip = bill[i] * X%
const cost = tip + bill[i]
添加到数组
tips.push(tip);
costs.push(cost);

循环遍历数组:①for ② for-in ③ forEach ④for-of(ES6新增)
*/

const tip = [ ];   // 定义一个小费空数组
const cost = [ ];  // 定义一个总消费的空数组   

const tipCalculator = (bill) => { 
// 声明函数(传入了一个账单(bill)参数)
// function tipCalculator(bill){
    for (let i = 0;i < bill.length;i++){
        // var tip;  // 声明一个小费变量
        if(bill[i] < 50){
            tip[i] = bill[i] * 0.2;  // 小费
        }
        else if ((bill[i] > 50) && (bill[i] < 200)){
            tip[i] = bill[i] * 0.15;
        }
        else if(bill[i] > 200){
            tip[i] = bill[i] * 0.1;
        }
        tip[i] = Math.round(tip[i] * 100) / 100;   // 输出小费保留一位小数
        // 计算总消费(方案一)
        cost[i] = tip[i] + bill[i];
        // (方案二)
        // const cost = tip + bills[i];
        // tips.push(tip);
        // costs.push(cost);
    }
    //输出小费和最终支付金额
    console.log ("小费:",tip ,"\n总消费:",cost);

}
tipCalculator([124,48,268]);  // 传参打印输出函数

练习二

/*
假设有三个数 a、b、c,求这三个数的平均值的函数为:
function mean(a,b,c){
return (a + b + c)/3;
}
(1)如果要求任意个数的数字的平均值,改如何改进这个函数呢?请编写改进的
mean1()函数,让该函数可以计算任意个数的数字的平均值。
提示:使用扩展运算符
(2)请编写函数 mean2() ,使用数组的 reduce() 函数改写 mean1() ,让代码更加精简
(3) 请在第二步的基础上编写函数 mean3() ,实现只对数组中的偶数求平均值。

提示:使用回调函数

*/

// 第 1 题
const mean1 = (...numbers) => {
    let sum = 0;
    let avg;
    for (const num of numbers) {
        sum = sum + num;
        // avg = sum / num;
    }
    // return avg;
    return sum/numbers.length    // 和除以数组长度
}
console.log("平均值:" + mean1(2, 2, 2, 2,2));
// 第 2 题
function mean2(...numbers){
    // 传入对数组中的每个元素执行一个提供的 reduce 函数(升序执行),
    // 将其结果汇总为单个返回值(这里是每个相加,即求到数组元素之和)。
    var sum = [1,2,3,6,4].reduce((num,surval) => num + surval);
    // 数组长度
    // var len = arguments.length;  
    var len = numbers.length;  
    var avg = sum / len;
    return avg;
}
console.log("平均值:" + mean2(1,2,3,6,4));
// 第 3 题
// 方式一:
function mean3(...numbers){
    const data = [1,2,3,6,4];
    // 将偶数提出来
    const oArray = [ ];
    for (let i = 0; i < data.length; i++) {
        if (data[i] % 2 === 0) {
            // 将符合情况的偶数提出来存放到 oArray 这个数组里面
            oArray.push(data[i])  
        }
    }
    // 打印输出偶数数组
    console.log("偶数数组:",oArray);       
    var sum = oArray.reduce((num,surval) => num + surval);
    // 求数组长度
    var len = oArray.length;  
    var avg = sum / len;
    return avg;
}
console.log("偶数平均值:" + mean3());


// 方式二
function mean3(...numbers){
    const arg = numbers.filter((x) => x % 2 == 0);
    console.log(arg);
    return arg.reduce((num,surval) => num + surval) / arg.length;
}
console.log("偶数平均值:" + mean3(1,2,3,4));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值