排序通过保留键名
sortBy keeping key name
我正在尝试对对象进行排序,但在排序后似乎无法保留每个对象的键名。
这是我正在排序的示例 json
series_data: {
embeded: {
objectNameA: {
item: {
last:{reportdate:2014-10-05, trend:=, change:0, value:0},…},
first: {reportdate:2013-01-06, trend:?, change:null, value:0},
high: 1,
low: 0,
median: 0.043478260869565216,
series: [{reportdate:2013-01-06, trend:?, change:null, value:0},…]
},
objectNameB: {…}
我需要对象名称,因为它在我的模板中用于描述其他所有内容。
这是我对数据进行排序的方式
var items = _.sortBy(series_data.embeded, function(series, index) {
return series.cd.last.value
}).reverse();`
这将返回0:{…}, 1:{…}, 2:{…}
,当我需要它时objectNameA:{…},objectNameB:{…}
。
或者更好
0:{objectNameA:{…},…}, 1:{objectNameB:{…},…}
如何保留或添加对象名称,同时按从高到低的顺序排序?
我认为你不能通过一次调用_.sortBy()来做到这一点。
但是,您可以通过两个步骤完成它:
- 调用 _.sortBy() 并将每个对象的键分配为属性
- 在排序数组上调用 _.each() 以获取所需的对象结构
下面是一个示例 JSBIN
根本问题是对象是属性的无序集合。
我通过在_.sortBy()
中的每个object
上设置一个key
属性来实现这一点 - 不理想,而是一种解决方案
_.sortBy(object, function(item, key) {
item.key = key;
return item.sortattribute;
});
相关文章:
- 分派点击事件并保留击键修饰符
- 在可排序的JQuery UI列表中至少保留一个项目
- 按值对映射/哈希进行排序,保留键
- AngularJS - 在服务内部对数组进行排序,在控制器/视图中保留绑定
- 车把:在保留原始排序索引的同时对列表进行排序
- JQuery 表排序器 - 保留第一行不变
- 执行列排序后,dgrid 无法保留滚动位置
- 排序通过保留键名
- 对 json 保留索引进行排序
- 更新数据时保留和提示排序顺序
- JavaScript[].Sort()方法在应该保留元素时进行排序
- 在保留键的情况下,基于对象属性对映射进行排序
- 如何在排序后保留事件侦听器
- 在Javascript中保留对象数组排序后的插入顺序
- 用Angular JS的排序和过滤保留砖石效果
- 在javascript中基于另一个数组对数组进行排序,同时在末尾保留未排序的元素
- 对列表进行排序,但保留CSS标记
- 如何排序选择列表中的选项,但保留一个在顶部
- 自定义不区分大小写排序函数,保留原始的大小写
- 如何按值对关联数组排序并保留值