按特定值对 json 个对象进行排序
Sorting json objects by specific value
我正在将我已经按计数排序的数据从 Laravel 中的控制器发送到我的脚本文件。 Json 我发送的数据如下所示:
{"5":{"title":"Coop post title","summary":"dbsbsb","count":5},
"7":{"title":"Example article","summary":"fdsbdfsbsffd","count":5},
"6":{"title":"Coop's post","summary":"sdbadbb","count":3},
"0":{"title":"sdvsdv","summary":"dsvsdv","count":2},
"4":{"title":"sdvsdv","summary":"dsvsdv","count":1}}
但是当我解析 json 脚本文件中这样的数据时,数据再次变得随机:
var cleanData = $.parseJSON(data);
console.log(cleanData);
然后我得到如下所示的控制台数据:
Object {0: Object, 4: Object, 5: Object, 6: Object, 7: Object}
0:Object
count:2
summary:"dsvsdv"
title:"sdvsdv"
__proto__:Object
4:Object
count:1
summary: "dsvsdv"
title: "sdvsdv"
__proto__:Object
5:Object
count:5
summary: "dbsbsb"
title: "Coop post title"
__proto__: Object
6:Object
count:3
summary: "sdbadbb"
title: "Coop's post"
__proto__: Object
7:Object
count:5
summary: "fdsbdfsbsffd"
title: "Example article"
__proto__: Object
您可以使用 lodash#sortBy 排序:
_.sortBy(collection, [iteratees=[_.identity]])
创建一个元素数组,通过每个迭代对象 运行 collection
(数组|对象)中每个元素的结果按升序排序。此方法执行稳定排序,即它保留相等元素的原始排序顺序。使用一个参数调用迭代器:(value).
var cleanData = {"5":{"title":"Coop post title","summary":"dbsbsb","count":5},"7":{"title":"Example article","summary":"fdsbdfsbsffd","count":5},"6":{"title":"Coop's post","summary":"sdbadbb","count":3}, "0":{"title":"sdvsdv","summary":"dsvsdv","count":2}, "4":{"title":"sdvsdv","summary":"dsvsdv","count":1}};
cleanData = _.sortBy(cleanData, ['count']);
console.log(cleanData);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>
我正在将我已经按计数排序的数据从 Laravel 中的控制器发送到我的脚本文件。 Json 我发送的数据如下所示:
{"5":{"title":"Coop post title","summary":"dbsbsb","count":5},
"7":{"title":"Example article","summary":"fdsbdfsbsffd","count":5},
"6":{"title":"Coop's post","summary":"sdbadbb","count":3},
"0":{"title":"sdvsdv","summary":"dsvsdv","count":2},
"4":{"title":"sdvsdv","summary":"dsvsdv","count":1}}
但是当我解析 json 脚本文件中这样的数据时,数据再次变得随机:
var cleanData = $.parseJSON(data);
console.log(cleanData);
然后我得到如下所示的控制台数据:
Object {0: Object, 4: Object, 5: Object, 6: Object, 7: Object}
0:Object
count:2
summary:"dsvsdv"
title:"sdvsdv"
__proto__:Object
4:Object
count:1
summary: "dsvsdv"
title: "sdvsdv"
__proto__:Object
5:Object
count:5
summary: "dbsbsb"
title: "Coop post title"
__proto__: Object
6:Object
count:3
summary: "sdbadbb"
title: "Coop's post"
__proto__: Object
7:Object
count:5
summary: "fdsbdfsbsffd"
title: "Example article"
__proto__: Object
您可以使用 lodash#sortBy 排序:
_.sortBy(collection, [iteratees=[_.identity]])
创建一个元素数组,通过每个迭代对象 运行 collection
(数组|对象)中每个元素的结果按升序排序。此方法执行稳定排序,即它保留相等元素的原始排序顺序。使用一个参数调用迭代器:(value).
var cleanData = {"5":{"title":"Coop post title","summary":"dbsbsb","count":5},"7":{"title":"Example article","summary":"fdsbdfsbsffd","count":5},"6":{"title":"Coop's post","summary":"sdbadbb","count":3}, "0":{"title":"sdvsdv","summary":"dsvsdv","count":2}, "4":{"title":"sdvsdv","summary":"dsvsdv","count":1}};
cleanData = _.sortBy(cleanData, ['count']);
console.log(cleanData);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>