[英]Reorder arrays within json object
var data = {
chart : 'rank',
labels: [
{
0: 'First Choice'
1: 'Second Choice',
2: 'Third Choice',
3: 'Fourth Choice',
4: 'Fifth Choice'
}
],
rows: [
{
0: 2,
1: 8,
2: 1,
3: 30
4: 4
}
]
}
有沒有一種方法可以對結果進行重新排序,以便將行從高到低重新排序,並且將相應的標簽也重新排序,如下所示:
var data = {
chart : 'rank',
labels: [
{
0: 'Fourth Choice'
1: 'Second Choice',
2: 'Fifth Choice',
3: 'First Choice',
4: 'Third Choice'
}
],
rows: [
{
0: 30,
1: 8,
2: 4,
3: 2
4: 1
}
]
}
到目前為止,我已經設法使用以下命令對行數組進行重新排序,但是在標簽方面卻卡住了?
rows = rows.sort(function(a, b){return b-a});
將對象值放入數組中並進行排序。 排序后,根據排序后的數組更新實際對象。
var data = { chart: 'rank', labels: [{ 0: 'First Choice', 1: 'Second Choice', 2: 'Third Choice', 3: 'Fourth Choice', 4: 'Fifth Choice' }], rows: [{ 0: 2, 1: 8, 2: 1, 3: 30, 4: 4 }] }; // get object property name array Object.keys(data.labels[0]) // generate array with object values .map(function(k) { return [data.labels[0][k], data.rows[0][k]] // sort the array based on rows value in array }).sort(function(a, b) { return b[1] - a[1]; // iterate and update real object }).forEach(function(v, i) { data.labels[0][i] = v[0]; data.rows[0][i] = v[1]; }); console.log(data);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.