Retrospection/Sprint

배열 스프린트 회고 22~26

카트먼 2020. 7. 17. 12:59

22.

// 모든요소의 곱을 반환하는 함수 작성 

// reduce 사용하면 될듯 

function computeProductOfAllElements(arr) {
  let multi = '';
  if(arr.length === 0){
    return 0
  }
  multi = arr.reduce(function(acc , cur){
    return acc * cur
  })
  return multi;
}

 

 

 

23.

//아까 분명히 혼자 힘으로 풀었는데 다시푸니까 안됨 ㅠㅠ 

// 딱히 배열메소드 안쓰고 풀었던 방법이 아래방법 

function getLengthOfLongestElement(arr) {
  let longist = '';
  for(i in arr){
    if(arr[i].length  >= longist.length ){
      longist = arr[i]
    }
  }
  return longist.length ; 
}

리듀스 메서드를 사용해서 푸는것을 문제에서는 원하는것 같다. 

리듀스를 사용해서 풀어보면 

function getLengthOfLongestElement(arr) {
  if( arr.length === 0 ){
    return 0;
  }
 
  return arr.reduce(function longist(acc , cur){
    if (acc.length >= cur.length){
       return acc ; 
    }else {
      return cur;
    }
  }).length 
}

위의 방법이 나온다 

조건문을 잘 설정해야 될거같다 저부분에서 계속 실수남발 이였다 .

 

24.

//23번 문제랑 같음 

// 문자열을 반환한다는 조건만 다를뿐. 길이를 구하는것이 아닌 그 엘레먼트 자체를 구하는거여서 더 쉬웠다. 

function getLongestElement(arr) {
  if(arr.length === 0){
    return '';
  }
  return arr.reduce(function longstr(acc,cur){
    if(acc.length >= cur){
      return acc
    }else{
      return cur
    }
  })
}

 

 

25.

//주어진 배열중 엘리먼트의 길이가 홀수인 문자열만을 요소로 가지는 배열을 반환하는 함수 만들기

..내가 푼 방법은 아래의 방법 이였는데 문제에서 원하는 방법은 filter메소드를 사용하는 것 이였다 . 

function filterOddLengthWords(words) {
  let oddNumber =[];
  for(i in words){
    if( words[i].length %2 === 1){
      oddNumber.push(words[i])
    }
  }
  return oddNumber;
}

filter 메소드에 대한 학습을 조금 했으니 다시 풀어보았다 .

다행히 내 힘으로 코드를 완성할 수 있었다 . 

function filterOddLengthWords(words) {
  //길이가 홀수인 요소를 가지는 배열 반환 
  //filter 를 사용해서 만들어보자 
  return words.filter(function odd(input){
    if(input.length % 2 === 1){
      return input
    }
  })

 

26.

//배열이 주어졌을때 엘리먼트들의 평균을 반환하는 함수 만들기 .

// 빈배열이 주어질경우 0을 반환해야 한다 .

처음 만든 방법은 반복문으로 다 더해줘서 num.length 로 나눴다 . 

function computeAverageOfNumbers(nums) {
  let av = 0;
  let result ='';
  if(nums.length === 0){
    return 0;
  }else{
   for(i in nums)(
    av = av + nums[i]
  )
  result = av / nums.length ; 
  return result 
  // your code here
}
}

위의 방법보다 리듀스 메소드가  좋을것같아 다시 만들어줌  

function computeAverageOfNumbers(nums) {
  if( nums.length === 0){
    return 0
  }

  let sum = 
   nums.reduce(function ave(arr, cur){
    return arr + cur ; 
  })

  return sum/nums.length ; 

}