2016-12-17 5 views
0

そうした配列オブジェクトを並べ替える必要があります。キーが動的である場合、オブジェクトの配列を値で並べ替えます。

var obj = [{"UMAIR":410}, 
     {"ALI":2177}, 
     {"JOHN":410}, 
     {"ANTHENY":410}, 
     {"FRANKLY":410}, 
     {"FRONTY":534}, 
     {"SLIM":534}, 
     {"ASFUND":534}]; 

各オブジェクトの整数値でソートする必要があります。 私は、次のコード(私がオンラインに発見したことを)理解しようとしています:

obj.sort(function(a, b) { 
    return a.price - b.price; 
}); 

しかし、このコードでそのが価格プロパティを使用して、私は」ここに任意の特定のプロパティを持っていけません。あなたはソート機能を試すことができます

+0

を提供リンクから

コードをどのように機能するかを確認することができます。このLink

は、開始または終了オブジェクトということですか?あなたは何を試しましたか?そして何が問題でしたか? – Xotic750

+2

「唯一のプロパティの値」を見つけることは可能ですが、最初のデータ構造を修正するためには、全体的にもっと便利なアプローチになるでしょう。 '[{" JOHN "、123]、..]'(例えば、2番目の要素は常に値)のような 'タプル'を使うか、[[{name: "JOHN" 、価格:123}、..]。 – user2864740

答えて

2

...

obj.sort(function(a,b) { 
    return a[Object.keys(a)[0]] - b[Object.keys(b)[0]]; 
}); 

は同等です:

obj.sort(function(a,b) { 
    var aValue = a[Object.keys(a)[0]]; 
    var bValue = b[Object.keys(b)[0]]; 
    if (aValue > bValue) 
    return 1; 
    else if (aValue < bValue) 
    return -1; 
    else 
    return 0; 
}); 

編集は、ちょうどあなたの編集を見て、ええ、あなたはそれを見つけました。 jsonから要素を抽出する方法も検索する必要があります。場合によっては Object.keys、

Itキーストリングを含む配列を返します。

オブジェクトにはSINGLEキーが含まれているため、配列から最初の値(0)を取得し、aからbの値を減算しています。

a、bはあなたの配列のエントリです。彼らはオブジェクトです。あなたはソート機能は、私が

function compare(a, b) { 
    if (a is less than b by some ordering criterion) { 
    return -1; 
    } 
    if (a is greater than b by the ordering criterion) { 
    return 1; 
    } 
    // a must be equal to b 
    return 0; 
} 
+0

降順で行う場合はどうすればよいですか? –

+1

aとbを逆にします。私があなたに提供したリンクをチェックしましたか? – Devian

関連する問題