2017-09-19 1 views
1

문자열 키를 사용하여 'cost'속성별로 객체 배열을 정렬하는 방법은 무엇입니까?저장 키를 사용하여 속성 값으로 객체의 Javascript 배열 정렬

시작 배열 :

aparts: { 
    apart1 : {id: "1", status: 2, cost: 10033450}, 
    apart2 : {id: "2", status: 2, cost: 5214000}, 
    apart3 : {id: "3", status: 2, cost: 7314300}, 
    apart4 : {id: "4", status: 1, cost: 9261700}  
} 

배열에 원하는 :

aparts: { 
    apart2 : {id: "2", status: 2, cost: 5214000}, 
    apart3 : {id: "3", status: 2, cost: 7314300}, 
    apart4 : {id: "4", status: 1, cost: 9261700}, 
    apart1 : {id: "1", status: 2, cost: 10033450} 
} 
+2

당신은 일종의 반대하지 수있는 속성 (키) 공식적으로 – Redu

+0

@Redu이 ** – dsb

+1

'aparts'는 나쁜 소식을 아니에요 ** 배열. 그것은 일반적인 대상입니다. –

답변

2

이 속성의 순서가 보장되지 않습니다. 여기 예를 들어, 참조 : 당신이 뭔가를 주문하려면

https://stackoverflow.com/a/5525820/1250301

는, 당신은 배열을 사용해야합니다. 변환은 매우 간단합니다 :

var aparts = { 
 
    apart1 : {id: "1", status: 2, cost: 10033450}, 
 
    apart2 : {id: "2", status: 2, cost: 5214000}, 
 
    apart3 : {id: "3", status: 2, cost: 7314300}, 
 
    apart4 : {id: "4", status: 1, cost: 9261700}  
 
}; 
 

 
var arr = Object.keys(aparts).map(function(k) { return aparts[k]; }).sort(function(a,b) { return a.cost - b.cost }); 
 

 
console.log(arr);

0

const aparts = { 
 
    apart1: {id:"1", status: 2, cost: 10033450}, 
 
    apart2: {id:"2", status: 2, cost: 5214000}, 
 
    apart3: {id:"3", status: 2, cost: 7314300}, 
 
    apart4: {id:"4", status: 1, cost: 9261700}  
 
}; 
 

 
const arr = 
 
    Object.keys(aparts) 
 
    .map(k => (aparts[k])) 
 
    .sort((a,b) => (a.cost - b.cost)) 
 
    .map(k => ({["apart" + k.id]: k})) 
 
; 
 

 
console.log(arr);

0

난 당신이지도를 찾고 있습니다 믿습니다. 어떤 불규칙한 물체가 일치합니다.

let aparts= { 
 
    apart1: { id: "1", status: 2, cost: 10033450 }, 
 
    apart2: { id: "2", status: 2, cost: 5214000 }, 
 
    apart3: { id: "3", status: 2, cost: 7314300 }, 
 
    apart4: { id: "4", status: 1, cost: 9261700 } 
 
}; 
 
let sorted = Object.entries(aparts).map(x => Object.assign(x[1], { 
 
    apart: x[0] 
 
})).sort((a, b) => a.cost - b.cost); 
 

 
let result = new Map(sorted.map(x => ([x.apart, (delete x.apart, x)]))); 
 

 
console.log(...result)

+0

예, Matt Burland가 쓴 것처럼이 방법을 배우기 시작하십시오. – dsb

+0

@dsb 나는 당신에게 생각을 남기고 싶습니다 ... 그러나 당신이 그것을 어디에 넣을 지 확신하지 못합니다. – Rick

+0

당신을 이해하지 못합니다. – dsb