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
}
感谢提前
答案 0 :(得分: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');
UPD。如果你真的想创建一个对象,那么你可以这样做:
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}
答案 1 :(得分:0)
我终于找到了解决问题的方法。
dfsk帮我找到了逻辑,我刚修正了他的功能:
var new_myobject = _.chain(myobject).map(function(num, key) {
return {
type: key,
count: num
};
}).sortBy('count').reverse().value();