양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
function solution(x) {
var strx=String(x);
var arrx=Array.from(strx);
var strarrx=[]
for(i=0;i<arrx.length;i++){
strarrx.push(parseFloat(arrx[i]))
}
var sumx=strarrx.reduce((a,b)=>a+b,0)
var divx=x%sumx
if(divx==0){
var answer=true
}
else if(divx!=0){
var answer=false}
return answer;
}
var x=12
x
12
var strx=String(x)
strx
"12"
var arrx=Array.from(strx)
arrx
(2) ["1", "2"]
for(i=0;i<arrx.length;i++){
strarrx.push(parseFloat(arrx[i]))}
2
strarrx
(2) [1, 2]
var sumx=strarrx.reduce((a,b)=>a+b,0)
undefined
sumx
3
//나누어떨어진다는 것은 나머지가0이라는 것을 의미한다.
var divx=x%sumx
if(divx==0){
var answer=true}else{var answer=false}
answer
true
function solution(x) {
//12를 넣으면
var strx=String(x);
//"12"
var arrx=Array.from(strx);
// ["1", "2"]
var strarrx=[]
for(i=0;i<arrx.length;i++){
strarrx.push(parseFloat(arrx[i]))
}
//[1, 2]
var sumx=strarrx.reduce((a,b)=>a+b,0)
//3
var divx=x%sumx
//0
if(divx==0){
var answer=true
}
else if(divx!=0){
var answer=false}
return answer;
//true
}
/*solution(10)
true
solution(11)
false
solution(12)
true
solution(13)
false
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/from
Array.from(arrayLike[, mapFn[, thisArg]])
매개변수
arrayLike :배열로 변환하고자 하는유사 배열 객체나 반복 가능한 객체.
mapFn (Optional) :배열의 모든 요소에 대해 호출할 맵핑 함수.
thisArg (Optional) :mapFn 실행 시에 this로 사용할 값.
Array.from('foo');
// ["f", "o", "o"]
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
var sum = [0, 1, 2, 3].reduce(function (accumulator, currentValue) {
return accumulator + currentValue;
}, 0);
// sum is 6
var total = [ 0, 1, 2, 3 ].reduce(
( accumulator, currentValue ) => accumulator + currentValue,
0
);
accumulator : 콜백의 반환값을 누적
currentValue : 처리할 현재 요소
currentIndex (Optional) :처리할 현재 요소의 인덱스
array (Optional) : reduce()를 호출한 배열