2017-09-19 2 views
1

文字列キーを使用してプロパティ 'コスト'でオブジェクトの配列を並べ替えるにはどうすればよいですか?保存キーを使用してオブジェクトの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

関連する問題