該算法題來自于 codewars【語言: javascript】,翻譯如有誤差,敬請諒解~

- 任務(wù)
- 在這個簡單的練習中,您需要構(gòu)建一個函數(shù),用于獲取一個值(整數(shù))的整數(shù)倍的集合,他會接收2個參數(shù)(int,limit),在獲取該值(int)的整數(shù)倍數(shù)時,不能超過另一個值(limit)。如果 limit 是這個值的整數(shù)倍,那么它也應(yīng)該包含在返回的集合中。該函數(shù)只接收正整數(shù),limit 將始終高于 int 。
- 例如:
如果傳遞的參數(shù)是(2,6),函數(shù)應(yīng)該返回[2,4,6],因為2,4,6是2~6之間2的倍數(shù)。
- 解答【如解答有誤,歡迎留言指正~】
- 其一
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方法用于將兩類對象轉(zhuǎn)為真正的數(shù)組:類似數(shù)組的對象(array-like object)和可遍歷(iterable)的對象(包括ES6新增的數(shù)據(jù)結(jié)構(gòu)Set和Map)。
// Array.from 還可以接受第二個參數(shù),作用類似于數(shù)組的map方法,用來對每個元素進行處理,將處理后的值放入返回的數(shù)組。
const findMultiples = (int,limit)=>Array.from({length:~~(limit/int)},(a,i)=>i*int+int);
- 其四 fill方法
// es6 fill方法使用給定值,填充一個數(shù)組。
function findMultiples(int,limit){
return Array(Math.floor(limit/int)).fill(1).map((x,i)=>int*(i+1));
}
- 其五
// es6 fill方法使用給定值,填充一個數(shù)組。
function findMultiples(int,limit){
var list = [];
var product = int;
while (product <= limit) {
list.push(product);
product += int;
}
return list;
}