下划线,需要为数组创建多个顺序
Underscore and needs to create multiple order for an array
2 个问题:
我得到了一个包含 2 个数组的对象,如下所示:
{"iOS":["iPad","iPhone","iPhone6","iPad Mini"],"Android":["Galaxy S6","Galaxy S4"],"BlackBerry":["BlackBerry3"]}
如何使用下划线构建这样的单个对象:
myobject = {"iPad" : 0,"iPhone3": 0,"iPhone6" :0 ,"iPad Mini" :0, "Galaxy S6": 0,"Galaxy S4" :0, "BlackBerry3" : 0}
第二个问题,一旦我有了这样的对象:
myobject = {
"iPad" : 12,
"iPhone3": 0,
"iPhone6" :4 ,
"iPad Mini" :3,
"Galaxy S6": 1,
"Galaxy S4": 14,
"BlackBerry3" : 1
}
如何通过降序值排序以获得
myobject = {
"Galaxy S4" :14,
"iPad" : 12,
"iPhone6" :4 ,
"iPad Mini" :3,
"Galaxy S6" :1,
"iPhone3": 0,
"BlackBerry3" : 0
}
提前致谢
不能对对象属性进行排序。您将需要使用替代数据结构,例如对象数组。
例如,您可以使用以下代码构建这样的结构:
var myObject = _.chain(data).values().flatten().map(function(el) {
return {
type: el,
count: 0
};
}).value();
它将看起来像这样:
[{"type":"iPad","count":0},{"type":"iPhone","count":0}, ... ];
然后很容易用 _.sortBy 函数对其进行排序:
_.sortBy(myObject, 'count');
上。如果你真的想创建一个对象,那么这就是你可以做到的:
var myObject = _.chain(data).values().flatten().reduce(function(prev, curr) {
prev[curr] = 0;
return prev;
}, {}).value();
这将给
{"iPad":0,"iPhone":0,"iPhone6":0,"iPad Mini":0,"Galaxy S6":0,"Galaxy S4":0,"BlackBerry3":0}
我终于找到了解决我的问题的方法。
dfsk帮我找到了逻辑,我只是修复了他的函数:
var new_myobject = _.chain(myobject).map(function(num, key) {
return {
type: key,
count: num
};
}).sortBy('count').reverse().value();
相关文章:
- 按特定顺序在Trello上创建牌
- 下划线,需要为数组创建多个顺序
- InnerHTML创建问题,没有't加载顺序正确,可能存在处理问题
- 如何将.append()创建的元素顺序添加到先前添加的元素中
- 如何创建javascript顺序动画
- 创建真/假游戏,随机化Q顺序
- 保存动态创建的 jQuery 连接可排序列表的顺序
- Javascript 如何创建按顺序排列数字的对象
- 在Laravel Elixir中创建一个任务,以指定的顺序运行Gulp任务
- 您能否按字母顺序对从 JSON 文件动态创建的 jQuery 列表进行排序
- 在Javascript中创建和初始化对象成员的顺序
- 从JavaScript对象创建HTML表时,函数似乎是非顺序执行的
- 多个AJAX请求是否按照创建的顺序执行?
- 创建不需要的新行的span类的随机加载顺序
- 删除由jquery按顺序创建的元素
- 如何在画布中创建顺序但唯一的对象
- 从多个流创建一个文件,同时使用Gulp保持流和文件的顺序
- 如何创建一个保证顺序的关联数组
- 仅使用javascript创建按字母顺序排列的字符串
- 如何以正确的顺序创建数组对象,不存在的键值映射为空白值