根据以下信息实现函数: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);
我笔试测试用例的时候他一直不通过,太紧张了没看到测试用例的返回的提示;再就是太久没写一些东西只记得是干嘛用的,具体用法忘光了,还得多刷题