あなたがこれをしている理由を正確に知らずにあなたの質問に答えることは非常に難しいです!
とにかく、答えようとすると、1):
とにかくサーバー上でHTMLでリストを生成していて、リストの順序が変わらない場合、なぜJSONとJavaScriptでリストを生成するのでしょうか。これを行うには、サーバー側の技術を使用します。
リストが変更され、クライアントのUIでリストの順序を管理する必要があり、アクセシビリティに関する考慮事項がある場合:サーバー側の技術を使用してリストとJSONを作成し、サーバー側の両方を順序付けてからHTMLリストをレンダリングしますJSONをクライアントに渡します。これにより、JavaScriptが有効になっていないクライアント(ユーザー)がリストを利用できるようになり、JavaScriptが有効なクライアントが「ソート可能なリスト」を利用できるようになります。
JavaScriptを使用していないユーザーに懸念がなく、リストを並べ替え可能にする必要がある場合は、JSONデータをクライアントに渡し、JavaScriptを使用してレンダリングし、並べ替えを処理します。
2)並べ替える各オブジェクトが配列に含まれていると思いますか?もしそうなら、私はArray.sortメソッドを使用します:www.w3schools.com/jsref/jsref_sort.asp
次のようなものは、これを行う方法のアイデアをあなたに与えるはずです:
var data = [{
"Topic" : "C",
"Examples":[
{"Example" : "Example A one"},
{"Example" : "Example A two"},
]
},{
"Topic" : "B",
"Examples":[
{"Example" : "Example B one"},
{"Example" : "Example B two"},
]
},{
"Topic" : "A",
"Examples":[
{"Example" : "Example C one"},
{"Example" : "Example C two"},
]
}];
function sortTopics(topics, firstItem){
var sortedArray = [];
for (var i = 0; i < topics.length; i++) {
if (topics[i].Topic == firstItem) {
//add the specified first item
sortedArray.push(topics[i]);
//remove element from original
topics.splice(i,1);
break;
}
}
//sort the remainder of the array
topics.sort(function(a,b){
if(a.Topic < b.Topic){return -1;}
if(a.Topic > b.Topic){return 1;}
return 0;
});
//loop though and add each item to the new array
for (var i = 0; i < topics.length; i++) {
sortedArray.push(topics[i]);
}
return sortedArray;
}
sortTopics(data, "C");
クロスブラウザがどれほどになるかはわかりません。もちろん、JSONからリストを生成する必要がありますが、どこかで開始できるはずです。もちろん、すべてをより一般的で効率的にすることができます。
幸運を。