使用lo-dash/underscore从_.pluck获取对象

JJJ*_*jim 6 javascript underscore.js lodash

我有一个像这样结构的对象:

var my_object = {
  first_item: {important_number: 4},
  second_item: {important_number: 6},
}
Run Code Online (Sandbox Code Playgroud)

但是,我想要一个像这样结构的对象:

{
  first_item: 4,
  second_item: 6,
}
Run Code Online (Sandbox Code Playgroud)

我希望能够得到这样的结果_.pluck:

_.pluck(my_object, "important_number")
Run Code Online (Sandbox Code Playgroud)

但这给了我:

[0: 4, 1: 6]
Run Code Online (Sandbox Code Playgroud)

很好,但我需要对象的实际名称.我摆弄着并最终得到了这个:

_.reduce(my_object, function(memo, val, key) {
  memo[key] = val.content;
  return memo;
}, {});
Run Code Online (Sandbox Code Playgroud)

哪个有所期望的效果,但并不像我想的那么简单.在下划线/ lodash中是否有更好的解决方案,或者这是最好的解决方案?

Joh*_*ton 8

在Lo-Dash中你也可以使用_.transform,它是_.reduce的一个更强大的替代品:

_.transform(my_object, function(memo, val, key) {
  memo[key] = val.important_number;
});
Run Code Online (Sandbox Code Playgroud)


TWi*_*Rob 5

实际上你所描述的 - 即" pluck对象值" - 可以写成:

_.mapValues(my_object, "important_number")
Run Code Online (Sandbox Code Playgroud)

参见文档_.mapValues.

_.createCallback- 字符串属性魔法 - 在Lo-Dash中遍布各处使用:搜索"_.pluck" style callback.