zulekha
zulekha

Reputation: 323

merge object properties into one array using underscore

I have following Object.

var response = {
        "driving": [
            {
                "distance": "10,7 km",
                "duration": "28 minutes"
            },
            {
                "distance": "9,8 km",
                "duration": "25 minutes"
            },
            {
                "distance": "5,8 km",
                "duration": "18 minutes"
            }
        ],
        "walking": [
            {
                "distance": "10,4 km",
                "duration": "2 heures 10 minutes"
            },
            {
                "distance": "9,8 km",
                "duration": "2 heures 2 minutes"
            },
            {
                "distance": "5,7 km",
                "duration": "1 heure 11 min"
            }
        ]
    }

I would like to convert this object into array of objects like this:

[{"distance":"10,7 km","walking":"2 heures 10 minutes","driving":"28 minutes"},
{"distance":"9,8 km","walking":"2 heures 2 minutes","driving":"25 minutes"},
{"distance":"5,8 km","walking":"1 heure 11 min","driving":"18 minutes"}]

Any idea how can I achieve this using underscore.js?

Upvotes: 1

Views: 445

Answers (1)

Prateek
Prateek

Reputation: 299

var _ = require('lodash');
var response = {
  "driving": [{
    "distance": "10,7 km",
    "duration": "28 minutes"
  }, {
    "distance": "9,8 km",
    "duration": "25 minutes"
  }, {
    "distance": "5,8 km",
    "duration": "18 minutes"
  }],
  "walking": [{
    "distance": "10,4 km",
    "duration": "2 heures 10 minutes"
  }, {
    "distance": "9,8 km",
    "duration": "2 heures 2 minutes"
  }, {
    "distance": "5,7 km",
    "duration": "1 heure 11 min"
  }]
}

function customizer(objValue, srcValue) {
  var object = {
    "distance": objValue["distance"],
    "driving": objValue["duration"],
    "walking": srcValue["duration"]
  }
  return object
}

console.log(_.mergeWith(response["driving"], response["walking"], customizer));

check this out, [email protected] support this

Upvotes: 1

Related Questions