我写了一个函数,用第二个函数检查一些数字并返回一个数组。在检查代码是否有效后,我注意到我必须在第一个函数中声明一个新数组 (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 中有什么方法可以做一些接近于此的事情吗?
1 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
使用高阶函数,是的。
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
。
添加回答
举报
0/150
提交
取消