javascript - 数组声明
问题描述
我写了一个函数,用第二个函数检查一些数字并返回一个数组。
在检查代码是否有效后,我注意到我必须在第一个函数中声明一个新数组 (arr) 才能解决它。
function calc(a, b) {
arr = []
for(a;a<=b;a++) isPow(a) ? arr.push(a) : a
return arr
}
我想尝试在唯一需要数组的地方创建一个数组,也就是 push(a) 所在的位置。我想过这样的事情:
function calc(a, b) {
return for(a;a<=b;a++) isPow(a) ? [].push(a) : a
}
但显然这行不通。JavaScript 中有什么方法可以做类似的事情吗?
解决方案
使用高阶函数,是的。
function calc(a, b) {
return [...Array(b - a + 1).keys()].map(x => a + x).filter(x => isPow(x));
}
解释:
Array(b - a + 1)
将创建一个数组,其长度是 和 之间的元素数量,包括a
和b
。.keys()
将产生该数组的索引,即 和 之间的数字0
,b - a
包括在内。[...iterator]
将创建一个由迭代器的所有元素组成的数组(即 和 之间的数字0
,b - a
包括)。.map(x => x + a)
将固定范围,产生 和 之间的数字a
,b
包括在内。.filter(x => isPow(x))
将生成一个新数组,其中仅包含满足isPow
.
推荐阅读
- python - Pynput:计算按键次数
- mongodb - MongoDB 坚持使用“索引构建:耗尽构建期间收到的写入”消息创建索引
- ruby-on-rails - 将 mongomapper 替换为 mongoid 并更新 mongo 驱动程序后无法正确读取集合
- mysql - “BACKUP”在此位置无效
- c++ - 尝试使用带有参数变量的函数时出现 C++ 内存冲突错误
- java - 有没有办法让组合框根据用户选择从枚举中获取唯一信息?
- python - 如何创建不包括某些结果的笛卡尔积?
- scala - value 不是类型参数 F[] 的成员
- xml - 如何将 XML 文档的内容复制到 Delphi 中的 Soaprequest 对象?
- android - Spotify App Remote SDK:Google Pixel 3 上的 CouldNotFindSpotifyApp 错误