今天笔试的两道JS编程题

本文介绍了两个JavaScript函数的实现:recordDepth用于给多层嵌套对象添加depth属性以记录层级,而calculateNumber接收数组,对数字求和并减去字符串数字的和,结果保留一位小数。文章提供了测试用例及函数执行的注意事项。
摘要由CSDN通过智能技术生成

根据以下信息实现函数:recordDepth

       1、函数接收一个多层嵌套对象,请给对象每层增加一个属性depth,用于记录当前的层级数

       2、若传入参数非对象时,请返回null

function recordDepth(obj, depth = 1) {
                // 先判断传入参数是否为对象
                if (obj instanceof Object) {
                    obj.depth = depth;
                    // 遍历对象看是否还嵌套有对象
                    for (let k in obj) {
                        if (obj[k] instanceof Object) {
                            depth++;
                            recordDepth(obj[k], depth);
                        } else {
                            return obj;
                        }
                    }
                } else {
                    return null;
                }
            }
            // 测试
            let arr = {
                a: {
                    b: {
                        c: {
                            d: 1,
                        },
                    },
                },
            };
            console.log(recordDepth(arr));

根据以下信息实现函数:calculateNumber

       1、该函数只接收一个数组,数组中同时包含数字类型和字符类型的数字,若不满足条件返回undefined

       2、将数字类型的数字相加并减去字符类型的数字之和,结果保留一位小数(四舍五入)

function calculateNumber(arr) {
                // 先判断传入的是否为数组
                if (!Array.isArray(arr)) {
                    return undefined;
                }

                let sum = 0;

                arr.forEach(item => {
                    // 如果是数字类型就加上
                    if (typeof item === 'number') {
                        sum += item;
                    }
                    // 如果是字符串则再判断是否是字符串类型的数字
                    else if (typeof item === 'string') {
                        if (Number(item)) {
                            sum -= item;
                        } else {
                            return undefined;
                        }
                    } else {
                        return undefined;
                    }
                });
                // toFixed(n)用于格式化数值,n用于规定保留n位小数,返回值为字符串,会看情况四舍五入或填充0补位数
                // 注意用于操作符优先级,若sum为负数则不会返回字符串
                let result = parseFloat(sum.toFixed(1)); // 转换为数字型
                return result;
            }
            // 测试
            const a = calculateNumber([2, 3, '-1.4367']);
            console.log(a);

       我笔试测试用例的时候他一直不通过,太紧张了没看到测试用例的返回的提示;再就是太久没写一些东西只记得是干嘛用的,具体用法忘光了,还得多刷题

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值