将键和值拆分为单独对象的有效方法是什么?
What is an efficient way to split keys and values into separate objects?
我有一个包含一系列键和值的对象。
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},]
我一直在使用下划线,但我不确定这种类型的转换会被称为什么。
有好的模式吗?还是我做的不规范?
Use for...in
to iterate through object.
The for...in statement iterates over the enumerable properties of an object, in arbitrary order. For each distinct property, statements can be executed.
var obj = {
"diamonds": 77,
"gold-bars": 28,
"exciting-stuff": 52,
"oil": 51,
"sports-cars": 7,
"bitcoins": 40
};
var finalArr = [];
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
var myObj = {};
myObj['asset'] = i;
myObj['uantity'] = obj[i];
finalArr.push(myObj);
}
}
console.log(finalArr);
您可以使用 Object.keys()
and 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>');
如果你使用 Underscore,你可以这样做:
_.map(_.pairs(dataset), _.partial(_.object, ['asset', 'quantity']))
_.pairs
将您的对象转换为 [key, value]
对数组,然后映射到具有 asset
和 quantity
属性的对象。
我有一个包含一系列键和值的对象。
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},]
我一直在使用下划线,但我不确定这种类型的转换会被称为什么。 有好的模式吗?还是我做的不规范?
Use
for...in
to iterate through object.The for...in statement iterates over the enumerable properties of an object, in arbitrary order. For each distinct property, statements can be executed.
var obj = {
"diamonds": 77,
"gold-bars": 28,
"exciting-stuff": 52,
"oil": 51,
"sports-cars": 7,
"bitcoins": 40
};
var finalArr = [];
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
var myObj = {};
myObj['asset'] = i;
myObj['uantity'] = obj[i];
finalArr.push(myObj);
}
}
console.log(finalArr);
您可以使用 Object.keys()
and 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>');
如果你使用 Underscore,你可以这样做:
_.map(_.pairs(dataset), _.partial(_.object, ['asset', 'quantity']))
_.pairs
将您的对象转换为 [key, value]
对数组,然后映射到具有 asset
和 quantity
属性的对象。