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

Javascript 如何将对象转换为对象数组(或对象集合),javascript,arrays,javascript-objects,lodash,Javascript,Arrays,Javascript Objects,Lodash,搜索了又搜索,找不到这个,但我想这很容易 我正在寻找lodash的“对象”等价物——但我想要一个对象数组(或对象集合) 例如: // Sample Input {"United States":50, "China":20} // Desired Output [{"United States":50}, {"China":20}] 这样的东西够了吗?这不是洛达斯,但是 var input = {"United States":50, "China":20}; Object.keys(inp

搜索了又搜索,找不到这个,但我想这很容易

我正在寻找lodash的“对象”等价物——但我想要一个对象数组(或对象集合)

例如:

// Sample Input
{"United States":50, "China":20}

// Desired Output
[{"United States":50}, {"China":20}]

这样的东西够了吗?这不是洛达斯,但是

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选项-如果可能的话,这个项目相当致力于使用lodash。lodash是帮助程序库,如果您的语言本机支持您尝试做的事情,您不需要使用它:P@cale_b所有的javascript都是lodash,但当然是琐碎的。@mkoryak-理解。但是,如果我加载了lodash,并且我可以在单个函数行(如
..pairs()
)中完成它,并在my中使用它,那么使用lodash方法比编写此函数并单独调用它更有意义。你是说它在lodash中不可用吗?@cale_b Vohuman提供了你想要的解决方案!你说得对,这并不好。虽然我知道我可以使用
.map
来做任何事情,但我想问的是,是否有一个与
\uu.pairs()
相当的版本我没有……感谢您在这方面的帮助@MKORIAK:想看看qtip问题吗?啊,这正是OP想要的。谢谢这是对这个问题的正确答案,但是如果你在我的代码库中使用它而没有10行注释,我会踢你。我可以看一下@HunanRostomyan的代码,告诉你它到底做了什么thought@mkoryak-事实上,很多lodash函数链都需要注释,否则这几乎是荒谬的!(我发现Angular也是如此)。@cale_b,要使用
链中的代码,你需要将其添加为一个@andy-我能够使它在一个链中工作,而无需
mixin
-
.chain(data).map(函数(v,k,a){return u.pick(a,k);})