2017-12-20 12 views
0

私はv-forを持っています。これはJSONレスポンスでメッセージを受け取り、画面に出力します。メッセージはサーバーから順番に取得されますが、Vueクロムアドインを使用してデータを表示すると、データはアルファベット順に並べ替えられます。VueJS2ソートJSON

私は簡単な例があります。ここで

はポストマンを経由して要求されたJSONです:私はVueのを経由して電話をかけると、V-用を使用してレンダリングしたときにここで

{ 
    "e": "e", 
    "d": "d", 
    "c": "c", 
    "b": "b", 
    "a": "a" 
} 

は同じ結果です:

data:Object 
a:"a" 
b:"b" 
c:"c" 
d:"d" 
e:"e" 

そこで質問がされ、 Vueのデータの並べ替えを停止できますか?もしそうでなければ、どうやって再注文するのですか?

+0

オブジェクト内のキーの順序は保証されていません。反復方法によって決定されるか、まったく指定されません。ソート順序が重要な場合は、通常はオブジェクトを使用しないことが最善です。 –

+0

JSONオブジェクトには特定の順序はなく、オブジェクトを配置する順番を保つことはできません。オブジェクトの代わりに配列を渡し、必要に応じて変換することをお勧めします。 –

答えて

2

コメント欄に記載されているように、オブジェクト内のキーの順序は保証されていないため、サーバーが配列などの順序付けられた構造でメッセージを出力するようにすることをお勧めします。それが不可能な場合

、私はキーの順序は、(あなたのJSONデータのように)すべてを一度に作成されたオブジェクトに保存一般であることを見出しました。 Object.keys(data)は、のキーの配列を返します。が元の順序です。

ので、代わりの

<div v-for="key in Object.keys(data)"> 

を行い、その後、値を取得するためにdata[key]を使用

<div v-for="value in data"> 

のようなもの。

また、IEサポートが必要かどうかによって、Object.entriesを試すこともできます。

これが広範に展開される予定の場合は、いつか誰かのために中断することを期待してください。あなたのために働く何かが必要な場合は、これができます。

+0

ありがとう、これは完全に働いた。その本当の残念なことは、これを行うためのよりエレガントな方法ではないようです..私はjqueryと同様の操作をしようとしているかのように、何かvueが行っているようです。 – Brad

関連する問題