美文网首页
[8kyu]Find Multiples of a Number

[8kyu]Find Multiples of a Number

作者: 君肄塵 | 来源:发表于2017-06-29 22:16 被阅读11次

    该算法题来自于 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
    }
    
    // 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);
    
    // 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;
    }
    

    相关文章

      网友评论

          本文标题:[8kyu]Find Multiples of a Number

          本文链接:https://www.haomeiwen.com/subject/edpvcxtx.html