我有这个数据结构。我使用了underscorejs,但无法找到方法,就像下面的结构
[{"5+":[2,1,3]},{"3-5":[0,1,0]},{"1-3":[1,0,,3]},{"0.5":[0,0,0]},{"<30":[0,0,0]}]
通过使用这种数据结构,我想要这样的结构
$(".foo").css("min-height", function(){
return $(this).height();
});
由于我已经尝试过所有但无法找到解决方案的任何帮助,我们将非常感激。
答案 0 :(得分:0)
第一部分将对象列表转换为单个对象,其中键是对象列表中的每个唯一键,每个键的值作为数组连接:
{
"5+": [2,1,3],
"3-5": [0,1,0]
...
}
由于这不是您想要的格式,第二部分通过循环每个键并从中创建一个新对象,将此对象转换为对象列表。
var data = [{"5+":2},{"3-5":0},{"1-3":1},{"0.5":0},{"<30":0},{"5+":1},{"3-5":1},{"1-3":0},{"0.5":0},{"<30":0},{"5+":3},{"3-5":0},{"1-3":3},{"0.5":0},{"<30":0}];
// create object with all the values joined together in lists.
var map = data
.reduce(function (map, obj) {
var key = Object.keys(obj)[0];
// checks if the key allready exits in the new object.
// If it does we push a new value into the array,
// otherwise we create a new property with a list with one value.
map[key] ?
map[key].push(obj[key]):
map[key] = [obj[key]];
return map;
}, {});
// convert above result to a list with objects.
var newFormat = Object.keys(map)
.map(function (key) {
var obj = {};
obj[key] = map[key];
return obj;
})
console.log(newFormat)