[JS] 문제풀이

Mia:)·2021년 1월 14일
0
  • 조금 시간이 걸린 문제들 기록.

getData는 세 개의 배열을 인자로 받는 함수입니다.

salesArr: 날짜별 판매량
ex) [["20190401", 34], ["20190402", 23], ["20190403", 29]]
reviewArr: 날짜별 리뷰수
ex) [["20190328", 3], ["20190401", 0], ["20190403", 1]]
likeArr: 날짜별 좋아요수
ex) [["20190328", 98], ["20190401", 102], ["20190403", 125]]
objData가 갖고 있는 property는 3개 입니다.

sumAmount: 총 판매량
sumReview: 총 리뷰개수
sumLike: 총 좋아요수

function getData(salesArr,reviewArr,likeArr){
  const amount = salesArr.map(item => item[1]);
  const review = reviewArr.map(item => item[1]);
  const like = likeArr.map(item => item[1]);

  const sumAmount = amount.reduce((a,b) => (a+b));
  const sumReview = review.reduce((a,b) => (a+b));
  const sumLike = like.reduce((a,b) => (a+b));

  const obj = {
    "sumAmount":sumAmount,
    "sumReview":sumReview,
    "sumLike":sumLike
  }
  return obj
}

underscore할때 reduce 구현할때 리듀스 자체를 이해하기 어려웠는데, 이렇게 써보니까, 정말 편하구나 싶다! 여전히 forEach랑 map이랑 조금 헷갈리지만, 여러번 두개를 써보면서 코드를 바꿔쓰면 또 이해가 가는 그런 상황...

2

sliceCityFromAddress 함수를 구현해 주세요.

sliceCityFromAddress 함수는 address 인자를 받습니다.

address 인자에는 주소를 나타내는 string이 주어집니다.

주어진 주소가 어느 도시인지를 찾아내서, 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.

주소는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".

"도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.
예를 들어, 다음과 같은 주소가 주어졌다면;

"경기도 성남시 분당구 중앙공원로 53"
"경기도 성남시 분당구 중앙공원로 53"
다음과 같은 값이 리턴되어야 합니다:

"경기도 분당구 중앙공원로 53"

function sliceCityFromAddress(address) {
  const city = address.indexOf("시");
  let result = "";

  const array = address.split(" ");
  if(array.indexOf("성남시") !== -1){
    const sungCity = array.indexOf("성남시");
    array.splice(sungCity,1);
    result = array.join(" ");
  }else{
    const seoul = array.indexOf("서울특별시");
    array.splice(seoul,1);
    result = array.join(" "); 
  }
  return result;
}

코드를 쓰면서도, 이렇게 하는게 아닌것 같은데... pass가 나오고, solution 보니까 내가 문제를 조금 이상하게 이해했다. 그래도 잠깐 망각하고 있었던 배열.join,splice, split를 다시 생각하게 되었다.

function divideArrayInHalf(array) {
    let result = [];
    const reversedArray=array.reverse()
  
    for(let i = 0 ; i<reversedArray.length; i++){
      if(reversedArray[i] > 10){
        result.push(reversedArray[i])
      }else{
        result.unshift(reversedArray[i])
      }
    }
    return result;
}

for문으로 배열을 다시 뒤로 돌려서 추가해야하나 고민했는데, 옛날에 코테에서 배열.reverse()를 써본적 있는 것 같아서, 구글링해보니, 바로 배열을 바꿔주었다!!

0개의 댓글