你的位置:首页 > 软件开发 > Java > JS练习题

JS练习题

发布时间:2016-03-27 23:01:00
在Codewars上面练习,现在到6级的题目了(数字越小越难)这道题叫Harshad or Niven numbers,原题http://www.codewars.com/kata/54a0689443ab7271a90000c6/train/javascript (可以先自己做 ...

在Codewars上面练习,现在到6级的题目了(数字越小越难)

这道题叫Harshad or Niven numbers,

原题http://www.codewars.com/kata/54a0689443ab7271a90000c6/train/javascript (可以先自己做做看哦)

Harshad number就是一个数可以被自己各个位上的数之和整除的数

比如588, 5 + 8 + 8 = 21,588 =21 * 28

题目是建立一个对象,有三个方法,

isValid(number)判断是否是Harshad number // Harshad.isValid( 1 ) returns true

getNext (number) 返回下一个Harshad number// Harshad.getNext( 0 ) returns 1

getSerie(count, start) 传入两个参数,一个是数量,一个是起始点(可选) 返回一个数组

// Harshad.getSerie( 3, 1000 ) returns [ 1002, 1008, 1010 ], while // Harshad.getSerie( 3 ) returns [ 1, 2, 3 ]

测试用例的范围是前2000个Harshad Number

以下是我的实现代码

var Harshad = ( function() { 'use strict'; //定义一个空集 var arr=[]; //循环初始值i var i=0; //当数组长度小于等于2000时执行循环 while(arr.length<2000) {   //求得各位数值的和   var digitSum=i.toString().split("").reduce(function(a,b){   return parseInt(a)+parseInt(b); });   //如果可以整除,则加入数组中   if(i%digitSum===0){arr.push(i);}   i++; } return {  isValid: function( number ) {   return arr.indexOf(number)!==-1;  },  getNext: function( number ) {   return arr[arr.indexOf(number)+1];  },  getSerie: function( count, start ) {    start=start||0;    var filterArr=arr.filter(function(b){      return b>start;    });   return filterArr.slice(0, count);  } };} () );

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:JS练习题

关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。