该算法题来自于 codewars【语言: javascript】,翻译如有误差,敬请谅解~
- 任务
- 在这个简单的练习中,您需要构建一个函数,用于获取一个值(整数)的整数倍的集合,他会接收2个参数(int,limit),在获取该值(int)的整数倍数时,不能超过另一个值(limit)。如果 limit 是这个值的整数倍,那么它也应该包含在返回的集合中。该函数只接收正整数,limit 将始终高于 int 。
- 例如:
如果传递的参数是(2,6),函数应该返回[2,4,6],因为2,4,6是2~6之间2的倍数。
- 解答【如解答有误,欢迎留言指正~】
- 其一
const findMultiples = (int,limit) => {
let len = limit%int == 0 ? limit/int : (limit - limit%int)/int;
let list = [];
for (let i=1;i<len+1;i++){
list.push(int*i);
}
return list;
}
- 其二
function findMultiples(int,limit){
let result = []
for (let i = int; i<=limit ; i+=int) {
result.push(i)
}
return result
}
- 其三 Array.from方法
// es6 Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)。
// Array.from 还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。
const findMultiples = (int,limit)=>Array.from({length:~~(limit/int)},(a,i)=>i*int+int);
- 其四 fill方法
// es6 fill方法使用给定值,填充一个数组。
function findMultiples(int,limit){
return Array(Math.floor(limit/int)).fill(1).map((x,i)=>int*(i+1));
}
- 其五
// es6 fill方法使用给定值,填充一个数组。
function findMultiples(int,limit){
var list = [];
var product = int;
while (product <= limit) {
list.push(product);
product += int;
}
return list;
}
网友评论