javascript - 使用 lodash 将数据分组然后映射到数组中

标签 javascript object mapping grouping lodash

我正在寻找对一些数据进行分组,然后将(我认为最好的方法,可能是错误的)映射到我创建的以下 JSFiddle 的数组中。

JSFiddle

JSFiddle 显示了所需的结果以及我注释掉的一些方法。

我的代码如下:

var answers = [
  { 'question_id': 1, 'id': 1,  'answer': 'Cat' },
  { 'question_id': 1,   'id': 2,  'answer': 'Dog' },
  { 'question_id': 2, 'id': 3,  'answer': 'Fish' },
  { 'question_id': 2,   'id': 4,  'answer': 'Ant' }
];

var result=_.chain(answers).groupBy("question_id").map(function(v, i) {
  return {
    question_id: i,
 //   id: _.get(_.find(v, 'id'), 'id'),
    answers:[
        {id: 1, answer: 'Cat'},
            {id: 2, answer: 'Dog'},
//  {id: _.map(v, 'id'), answer: _.map(v, 'answer'),}
    ] 
  }
}).value();
document.body.innerHTML = '<pre>' + JSON.stringify(result, null, '  ') + '</pre>';

最佳答案

你就快到了。要获得没有“question_id”的答案,您需要映射它们和 omit该属性(property)。这可以使用 map 函数来完成:

answers: _.map(v, function(answer){
    return _.omit(answer, 'question_id');
}

或者使用已经应用了一些参数的省略函数,然后将其用作 map 的函数:

var omitQuestion = _.partialRight(_.omit, 'question_id');

answers: _.map(v, omitQuestion)

关于javascript - 使用 lodash 将数据分组然后映射到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41831922/

相关文章:

asp.net - 如何将一个域映射到另一个域的子文件夹?

java - 使用 JDK8 Stream 如何迭代嵌套对象

javascript - 无法在 Angular Js 中使用 ng-if 检索下拉 ng-model 值

javascript - 自动选择另一个下拉菜单的下拉选项

javascript - 测试nodejs模块,最好的教程,方法?

javascript - Underscore.js _.template 导致 Chrome 扩展出错

javascript - 如何获取@对象属性的值?

python - 复制的旧列表引用被 python 中的新列表对象修改所更改

javascript - 为什么不能将新的 'key - value' 对添加到具有 "for..in"的空 JavaScript 对象,但它适用于非空对象?

.net - 使用正则表达式将字符串映射到功能