将键和值拆分为单独对象的有效方法是什么?

时间:2015-12-07 09:56:23

标签: javascript object underscore.js

我有一个对象是一系列键和值。

 var dataset =
    {"diamonds":77,
     "gold-bars":28,
     "exciting-stuff":52,
     "oil":51,
     "sports-cars":7,
     "bitcoins":40};

我想将每个键值拆分成一个数组中自己的对象,所以它看起来像。

var dataset =
    [{"asset":"diamonds", "quantity":77},
      {"asset":"gold-bars", "quantity":28},
      {"asset":"exciting-stuff", "quantity":52},
      {"asset":"oil", "quantity":51},
      {"asset":"bitcoins", "quantity":40},]

我一直在使用下划线,但我不确定这种类型的转换会被调用。 它有一个好的模式吗?或者我正在做非标准的事情?

3 个答案:

答案 0 :(得分:1)

  

使用for...in迭代对象。

     

for ... in语句以任意顺序迭代对象的可枚举属性。对于每个不同的属性,可以执行语句。

DomainConstraint

Fiddle here

答案 1 :(得分:1)

您可以将Object.keys()Array.prototype.map()用于此目的。



var dataset = { "diamonds": 77, "gold-bars": 28, "exciting-stuff": 52, "oil": 51, "sports-cars": 7, "bitcoins": 40 },
    result = Object.keys(dataset).map(function (k) { 
        return { asset: k, quantity: dataset[k] };
    });
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 2 :(得分:1)

如果你正在使用下划线,你可以这样做:

_.map(_.pairs(dataset), _.partial(_.object, ['asset', 'quantity']))

_.pairs将您的对象转换为[key, value]对数组,然后将其映射到具有assetquantity属性的对象。