使用下划线从javascript中的对象列表中提取值

时间:2014-11-30 09:47:41

标签: javascript node.js underscore.js

我有一个对象列表,其中每个对象都有数值:

var cpuInfo = [
  { user: 189625143,
    nice: 0,
    sys: 40239022,
    idle: 2087123838,
    irq: 720490 },
  { user: 76627160,
    nice: 0,
    sys: 35444113,
    idle: 2204916386,
    irq: 18233303 }
]

我需要计算idle的值除以所有值的总和。

为此,我需要得到所有对象中所有值的总和。

我尝试过这样做只提取值:

_(cpuInfo).each(_.values)

我希望它能像这样返回一个列表:

[189625143, 0, 40239022, 2087123838, 720490, 76627160, 0, 35444113, 2204916386, 18233303]

但由于某种原因,它返回与我开始时完全相同的东西 - 对象列表。 即使我把它扩展到这个:

_(cpuInfo).each(function(item) { return _(item).values() })

它仍然只返回对象列表。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

var res = _.map(cpuInfo, function (el) {
  return _.values(el)  
})
res = _.flatten(res)

console.log(res);

演示:http://jsbin.com/rodipu/1/edit?js,console

答案 1 :(得分:1)

纯JavaScript

temp = [];
cpuInfo.forEach(function(obj){
    Object.keys(obj).forEach(function(k){
        temp.push(obj[k]);
    });
});

参考 - Object.keys()Array.prototype.forEach()

注意 - 这两个功能都兼容> IE8