[Algorithm] 프로그래머스: 튜플

1 분 소요

배열 안에 객체를 특정 키를 기준으로 소팅하기

출처: mdn 공식문서

var arr = [
  { value: 3, content: [ 4, 2, 3, 3 ] },
  { value: 1, content: [ 3, 3 ] },
  { value: 4, content: [ 2, 3, 4, 1, 1 ] },
  { value: 2, content: [ 2, 3 ] }
]

value 기준으로 소팅하기

arr.sort(function (a, b) {
  if (a.value > b.value) {
    return 1;
  }
  if (a.value < b.value) {
    return -1;
  }
  // a must be equal to b
    return 0;
});

console.log(arr)
result
[
  { value: 1, content: [ 3, 3 ] },
  { value: 2, content: [ 2, 3 ] },
  { value: 3, content: [ 4, 2, 3, 3 ] },
  { value: 4, content: [ 2, 3, 4, 1, 1 ] }
]

전체 소스코드

function solution(s) {
  var answer = [];
  var len = s.length -1
  var arr = []
  var temp = []
  var num = ''

  s = s.substring(1,len).split('')
  s.forEach(str => {
    if (str === '{') {
      temp = []
    } else if (str === '}') {
      temp.push(Number(num))
      const obj = {}
      obj['value'] = temp.length
      obj['content'] = temp
      arr.push(obj)
    } else if (str === ',') {
      temp.push(Number(num))
      num = ''
    } else {
      num += str
    }
  })

  // array sort by obj's value
  arr.sort(function (a, b) {
  if (a.value > b.value) {
    return 1;
  }
  if (a.value < b.value) {
    return -1;
  }
  // a must be equal to b
    return 0;
  });

  arr.forEach(obj => {
    let { content } = obj
    content.forEach(num => {
      if (answer.includes(num) === false) {
        answer.push(num)
      }
    })
  })
  return answer;
}

카테고리:

업데이트:

댓글남기기