1

JSONとJavasriptは初めてです。

JSONでデータを持っています

var data = [
"FirstName: 'xyz', Lastname 'QSD', rollNo:'1',EntryDate:'2012-09-11T17:35:31.835+02:00'"

"FirstName: 'abc', Lastname 'qgr', rollNo:'2',EntryDate:'2012-08-11T17:35:31.835+02:00'"

]

FirstNameに従って、またはロール番号や選択したその他の属性に従って並べ替えたいと思います。

前もって感謝します。

4

4 に答える 4

4

質問に「」というタグを付けたので、これが。dojoを介した道場の方法dojo/store/Memoryです。DojoObjectStoreのチュートリアルもあります。

jsFiddleで実際に動作している以下のコードを参照してください:http://jsfiddle.net/phusick/MGUBT/

require(["dojo/store/Memory"], function(Memory) {

    var data = [
        { FirstName: 'xyz', Lastname: 'QSD', rollNo: '1', EntryDate: '2012-09-11T17:35:31.835+02:00' },
        { FirstName: 'abc', Lastname: 'qgr', rollNo: '2', EntryDate: '2012-08-11T17:35:31.835+02:00' }
    ];

    var store = new Memory({ data: data });

    var sortedData = store.query(null, {
        sort:[{ attribute: "FirstName", descending: false }]
    });

    console.dir(sortedData);

});
​
于 2012-10-01T09:53:34.753 に答える
2

オブジェクトを含む配列であると想定される場合dataは、次のようにすることができます。

data.sort(function(a,b) {
    return a.FirstName > b.FirstName;
})
于 2012-10-01T09:37:11.027 に答える
2

最初の問題は、データの構造です。あなたは事実上次のような配列を持っています

var data = [ "foo", "bar" ];

これらの文字列の行には、シリアル化されたデータが含まれています。したがって、最初に、このSOの質問で指定された任意のメソッド、たとえばJSONライブラリメソッドを介してデータを抽出する必要があります。

var interpreted = [];
for(var i=0; i<data.length; ++i) {
    interpreted[i] = JSON.parse(data[i]);
}

これで、次のような構造になります。

[
    0: {
        'Firstname': 'xyz',
        'Lastname' : 'QSD', // there is a colon missing in the
                            // source, I'm guessing accidentally
        ...
    },
    1: {
        'Firstname' : 'abc',
        ...
    }
]

したがって、を介して名にアクセスできますinterpreted[i].Firstname。これで、比較関数を渡すことで、この他のSO質問と同様の方法で並べ替えることができます。sort()

interpreted.sort(function(a,b) { 
    if(a.Firstname == b.Firstname)
        return 0;
    if(a.Firstname > b.Firstname)
        return 1;
    else
        return -1
} );

降順で並べ替える場合は、1と-1を入れ替える必要があります。

于 2012-10-01T09:45:09.573 に答える
0

最初の問題は、メンバーがオブジェクトではなく文字列リテラルであるということです。ただし、現在のように記述されている限り、単純な並べ替えを使用できます。書くだけ

data.sort();

配列は名でソートされます。

あなたが欲しいものは次のようなものです:

var data = [
 {FirstName: 'xyz', Lastname 'QSD', rollNo:'1',EntryDate:'2012-09-11T17:35:31.835+02:00'},
 {FirstName: 'abc', Lastname 'qgr', rollNo:'2',EntryDate:'2012-08-11T17:35:31.835+02:00'}
]

次に、次のような独自のコンパレータを提供するsort()関数を使用してソートできます。

data.sort(function (a, b) {
    return // return a positive number if a > b
           // use a.FirstName to access value of FirstName in a. 

})
于 2012-10-01T09:35:48.210 に答える