我正在寻找一些数据分组,然后将其映射(我认为最好的方法可能是错误的)到一个数组中,我创建了以下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属性之间进行映射。可以使用地图的功能来完成此操作:

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


或使用已经应用了某些参数的省略功能,然后将其用作地图的功能:

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

answers: _.map(v, omitQuestion)

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

10-09 02:11