如何将对象转换为对象数组(或对象集合)
how to convert object into array of objects (or collection of objects)
找了又找,找不到这个,但我想这很容易。
我正在寻找与 lodash _.pairs() 等效的 lodash "object" - 但我想要一个对象数组(或对象集合)。
示例:
// Sample Input
{"United States":50, "China":20}
// Desired Output
[{"United States":50}, {"China":20}]
这样就够了吗?这不是 lodash,但是...
var input = {"United States":50, "China":20};
Object.keys(input).map(function(key) {
var ret = {};
ret[key] = input[key];
return ret;
});
//=> [{"United States":50}, {"China":20}]
好的,如果必须的话:
var input = {"United States":50, "China":20};
var ouput = _.map(input, function(val, key){ var o = {}; o[key] = val; return o; });
但这并不比以前的答案好。更糟。
使用 lodash,这是生成预期结果的一种方法:
var res = _.map(obj, _.rearg(_.pick, [2,1]));
上面的简短代码片段可能会造成混淆。如果不使用 _.rearg
函数,它将变为:
_.map(obj, function(v, k, a) { return _.pick(a, k); });
基本上 rearg
函数用于重新排序传递给 pick
方法的参数。
找了又找,找不到这个,但我想这很容易。
我正在寻找与 lodash _.pairs() 等效的 lodash "object" - 但我想要一个对象数组(或对象集合)。
示例:
// Sample Input
{"United States":50, "China":20}
// Desired Output
[{"United States":50}, {"China":20}]
这样就够了吗?这不是 lodash,但是...
var input = {"United States":50, "China":20};
Object.keys(input).map(function(key) {
var ret = {};
ret[key] = input[key];
return ret;
});
//=> [{"United States":50}, {"China":20}]
好的,如果必须的话:
var input = {"United States":50, "China":20};
var ouput = _.map(input, function(val, key){ var o = {}; o[key] = val; return o; });
但这并不比以前的答案好。更糟。
使用 lodash,这是生成预期结果的一种方法:
var res = _.map(obj, _.rearg(_.pick, [2,1]));
上面的简短代码片段可能会造成混淆。如果不使用 _.rearg
函数,它将变为:
_.map(obj, function(v, k, a) { return _.pick(a, k); });
基本上 rearg
函数用于重新排序传递给 pick
方法的参数。