如何使用lodash链接获取和映射结果?

如何使用lodash链接获取和映射结果?,lodash,Lodash,我有一个列表,我正试图使用u.get从中提取一个对象,但在该选择之后,我需要在该对象上循环以创建一个新属性。到目前为止,我已经成功地使用了u.get和u.map的组合,如下所示,但我希望我能以某种方式使用u.chain var selected = _.get(results, selectedId); return _.map([selected], result => { var reviews = result.reviews.map(review => { var

我有一个列表,我正试图使用u.get从中提取一个对象,但在该选择之后,我需要在该对象上循环以创建一个新属性。到目前为止,我已经成功地使用了u.get和u.map的组合,如下所示,但我希望我能以某种方式使用u.chain

var selected = _.get(results, selectedId);
return _.map([selected], result => {
  var reviews = result.reviews.map(review => {
    var reviewed = review.userId === authenticatedUserId;
    return _.extend({}, review, {reviewed: reviewed});
  });
  return _.extend({}, result, {reviews: reviews});
})[0];

是否可以使用map以外的其他东西进行这样的转换(因为map需要我将其分解/创建一个包含单个项目的数组)。提前谢谢你

我可以看出您正在创建不必要的呼叫,您只需将所有这些工作简化为以下内容:

var output = {
  reviews: _.map(results[selectedId], function(review) {
    return _.defaults({
      reviewed: review.userId === authenticatedUserId
    }, review);
  })
};
该方法与类似,只是一旦设置了属性,就会忽略同一属性的其他值

var selectedId=1;
var authenticatedUserId=1;
风险值结果={
1: [
{userId:1,文本:'hello'},
{userId:2,文本:'hey'},
{userId:1,文本:“world?”},
{userId:2,文本:'nah'},
]
};
变量输出={
评论:uu.map(结果[selectedId],功能(评论){
返回默认值({
已审核:review.userId==authenticatedUserId
},检讨);
})
};
document.body.innerHTML=''+JSON.stringify(输出,0,4)+''

这正是我想要的洛达斯教育类型!谢谢,谢谢,谢谢!@ToranBillups我编辑了答案,我在uu.defaults()调用中切换了参数,这应该是正确的安排,因为我们不希望对象发生变异,即使
review
对象包含
revied
属性,它也会在第一个参数中保留值。