[Algorithm] 프로그래머스: 튜플
배열 안에 객체를 특정 키를 기준으로 소팅하기
출처: 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;
}
댓글남기기