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