繁体   English   中英

如何将对象转换为对象数组(或对象集合)

[英]how to convert object into array of objects (or collection of objects)

搜索和搜索,找不到这个,但我认为它很容易。

我正在寻找相当于lodash _.pairs()的lodash“对象” - 但我想要一个对象数组(或对象集合)。

例:

// 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}]

使用lodash,这是产生预期结果的一种方法:

var res = _.map(obj, _.rearg(_.pick, [2,1]));

上面的短代码片段可能令人困惑。 不使用_.rearg函数,它变为:

_.map(obj, function(v, k, a) { return _.pick(a, k); });

基本上, rearg函数用于将传递的参数重新排序到pick方法。

好的,如果你必须:

var input = {"United States":50, "China":20};
var ouput = _.map(input, function(val, key){ var o = {}; o[key] = val; return o; });

但这并不比之前的答案好。 它更糟糕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM