javascript - JS 中代码战练习的问题,预填充数组;初级水平
问题描述
这是练习的页面链接: https ://www.codewars.com/kata/prefill-an-array/train/javascript
创建一个函数 prefill,它返回一个包含 n 个元素的数组,所有元素都具有相同的值 v。看看你是否可以在不使用循环的情况下做到这一点。
您必须验证输入:
如果 v 被省略,v 可以是任何东西(原始或其他),如果 n 为 0,则用 undefined 填充数组,如果 n 不是整数或整数格式的字符串(例如,'123'),则返回一个空数组 > =0, 抛出 TypeError 抛出 TypeError 时,消息应该是“n 无效”,在这里您将 n 替换为传递给函数的实际值。
我的代码:
function prefill(n, v) {
if(n == 0) return [];
if(!Number.isInteger(n) || n < 0 ){
let TypeError = new Error;
TypeError.name = "TypeError";
TypeError.message = n + " is invalid";
throw TypeError
};
return new Array(n).fill(v);
}
它通过了除此之外的所有测试:应该以 n 作为布尔值抛出错误 测试通过:Value == 'TypeError' 测试通过:Value == 'true is invalid' 测试通过 prefill 没有以 n 为 false 抛出错误
谁能解释我为什么?我什至尝试直接输入 false 并且它不起作用:/
解决方案
你快到了。if
只是第一个语句中的一个简单问题。你需要严格检查。然后您还需要检查,'0'
因为问题的描述允许使用整数格式的字符串
if(n === 0 || n === '0') return [];
然后评估问题,n
因此返回一个空数组。但是你需要抛出错误以防.false
n == 0
true
false
推荐阅读
- google-drive-api - 如何使用服务帐户从谷歌驱动器文件下载或读取内容
- winforms - 为什么 OnClick 事件对应 winform 按钮的 WndProc 方法中的消息 ID 为 0x2111 或 8465?
- php - 图像上传在 Codeigniter 中不起作用
- c++ - re2 - Match/PartialMatch/FindAndConsume 之间的不同行为
- go - 有没有办法返回实现结构而不是 Go 中的接口?
- c++ - C++ 程序无法使用 CMD 正确编译,但是在 VSC 中符合
- java - 如何在spring boot中使用服务器提供的客户端私钥和证书调用服务器?
- mysql - 在 MySql 中从 Excel 表导入 3 种语言(英语、阿拉伯语和乌尔都语)数据,在 PhP 中使用 UTF-8
- flutter - 如何将 Provider 的数据设置为 Flutter 中 SharedPreferences 中存储的数据?
- c - 如何在C中用零填充空白(整数)位置?