gpt4 book ai didi

javascript - Underscore.js 对象转数组

转载 作者:搜寻专家 更新时间:2023-11-01 05:00:43 26 4
gpt4 key购买 nike

我是 underscore.js 的新手,我有一个来自 REST 服务的对象,看起来像这样(我已经手动输入并在此处将其分配给 var):

var production = [
{key: ["wind", "1"], value: 5},
{key: ["wind", "2"], value: 9},
{key: ["wind", "3"], value: 11},
{key: ["wind", "4"], value: 7},
{key: ["solar", "1"], value: 1},
{key: ["solar", "2"], value: 1},
{key: ["solar", "3"], value: 2},
{key: ["solar", "4"], value: 3},
{key: ["oil", "1"], value: 15},
{key: ["oil", "2"], value: 16},
{key: ["oil", "3"], value: 22},
{key: ["oil", "4"], value: 23},
];

然后再往下,我有一些代码可以解析这个对象并为项目创建数组,如下所示:

var orderedProduction = _.chain(production)
.groupBy(function (entity) {
return entity.key[0];
})
.map(function (values) {
return _.map(values, function (entity2) {
return entity2.value;
});
})
.value();

结果如下:

orderedProduction  = [
[5, 9, 11, 7],
[1, 1, 2, 3],
[15, 16, 22, 23]
]

丢失了 key (风能/太阳能/石油)。并用于绘制图形。我还能够像这样检查其中一些数组是否满足某个阈值:

var threshold = _.map(orderedProduction  , function(arr) {
return _.max(arr) > 10;
});

我的要求现在已经改变,我现在需要按总和过滤掉这些数组,同时保留 key 。

我希望以这样的对象结束:

orderedProduction  = {
"wind": [5, 9, 11, 7],
"solar": [1, 1, 2, 3],
"oil": [15, 16, 22, 23]
}

如果修复程序包含一种方法来对数组的值求和并删除那些总计未达到一定数量的值,那就太好了。 (即排除太阳能,如果它加起来不等于 10)。

这是我创建的一个 jsfiddle 来测试这一切:http://jsfiddle.net/2mfjw3jk/


更新:我解决的解决方案是:

var orderedProduction = _.chain(production)
.groupBy(function (entity) {
return entity.key[0];
})
.map(function (vals, key) {
return [key, _.pluck(vals, 'value')]
})
.filter(function(arr) {
var sum = 0;
_.each(arr[1], function(num){
sum += num;
})
return sum > 10;
})
.object()
.value();

它还会根据预先确定的阈值(在本例中为 10)过滤值。

最佳答案

你快到了:

var orderedProduction = _.chain(production)
.groupBy(function (entity) {
return entity.key[0];
})
.map(function (vals, key) {
return [key, _.pluck(vals, 'value')]
})
.object()
.value();

返回

{ wind: [ 5, 9, 11, 7 ],
solar: [ 1, 1, 2, 3 ],
oil: [ 15, 16, 22, 23 ] }

关于javascript - Underscore.js 对象转数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25867016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com