該算法題來(lái)自于 codewars【語(yǔ)言: javascript】,翻譯如有誤差,敬請(qǐng)諒解~
- 任務(wù)
- 在這個(gè)簡(jiǎn)單的練習(xí)中糠爬,您需要構(gòu)建一個(gè)函數(shù)揩抡,用于獲取一個(gè)值(整數(shù))的整數(shù)倍的集合峦嗤,他會(huì)接收2個(gè)參數(shù)(int,limit)钓试,在獲取該值(int)的整數(shù)倍數(shù)時(shí)糠睡,不能超過(guò)另一個(gè)值(limit)串稀。如果 limit 是這個(gè)值的整數(shù)倍到忽,那么它也應(yīng)該包含在返回的集合中喘漏。該函數(shù)只接收正整數(shù)翩迈,limit 將始終高于 int 负饲。
- 例如:
如果傳遞的參數(shù)是(2,6)椭微,函數(shù)應(yīng)該返回[2,4,6],因?yàn)?,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方法用于將兩類(lèi)對(duì)象轉(zhuǎn)為真正的數(shù)組:類(lèi)似數(shù)組的對(duì)象(array-like object)和可遍歷(iterable)的對(duì)象(包括ES6新增的數(shù)據(jù)結(jié)構(gòu)Set和Map)。
// Array.from 還可以接受第二個(gè)參數(shù),作用類(lèi)似于數(shù)組的map方法犹菱,用來(lái)對(duì)每個(gè)元素進(jìn)行處理,將處理后的值放入返回的數(shù)組陕凹。
const findMultiples = (int,limit)=>Array.from({length:~~(limit/int)},(a,i)=>i*int+int);
- 其四 fill方法
// es6 fill方法使用給定值,填充一個(gè)數(shù)組店茶。
function findMultiples(int,limit){
return Array(Math.floor(limit/int)).fill(1).map((x,i)=>int*(i+1));
}
- 其五
// es6 fill方法使用給定值,填充一個(gè)數(shù)組仿荆。
function findMultiples(int,limit){
var list = [];
var product = int;
while (product <= limit) {
list.push(product);
product += int;
}
return list;
}