0

I have an array with objects and I want to combine all values of params inside the objects into one object

Array [
  Object {
    "key": "Deze week",
    "params": Object {
      "thisWeekfilterDistance": [Function anonymous],
      "thisWeekSearch": [Function anonymous],
      "thisWeektoggleFilter": [Function anonymous],
      "thisWeektoggleRangeFilter": [Function anonymous],
    },
    "routeName": "Deze week",
  },
  Object {
    "key": "Binnenkort",
    "params": Object {
      "soonfilterDistance": [Function anonymous],
      "soonSearch": [Function anonymous],
      "soontoggleFilter": [Function anonymous],
      "soontoggleRangeFilter": [Function anonymous],
    },
    "routeName": "Binnenkort",
  },
  Object {
    "key": "Festivals",
    "params": Object {
      "festivalfilterDistance": [Function anonymous],
      "festivalSearch": [Function anonymous],
      "festivaltoggleFilter": [Function anonymous],
      "festivaltoggleRangeFilter": [Function anonymous],
    },
    "routeName": "Festivals",
  },
]

I have tried this

for (var i = 0; i < 3; i++) {
        if (typeof arr[i].params !== 'undefined') {
            //console.log(arr[i].params);
            test = arr[i].params;
        }
    }

or


for (var i = 0; i < 3; i++) {
   arr[i].param.reduce(function(result, current) {
     return Object.assign(result, current);
   }, {})
}

but i don't know how to store the results of those to get only 1 object with all object params.

So the expected result is:

{
      "thisWeekfilterDistance": [Function anonymous],
      "thisWeekSearch": [Function anonymous],
      "thisWeektoggleFilter": [Function anonymous],
      "thisWeektoggleRangeFilter": [Function anonymous],
      "soonfilterDistance": [Function anonymous],
      "soonSearch": [Function anonymous],
      "soontoggleFilter": [Function anonymous],
      "soontoggleRangeFilter": [Function anonymous],
      "festivalfilterDistance": [Function anonymous],
      "festivalSearch": [Function anonymous],
      "festivaltoggleFilter": [Function anonymous],
      "festivaltoggleRangeFilter": [Function anonymous],
}


Thank you.

7

2 Answers 2

2

You could use map to get an array of params. Then use Object.assign() to merge the array of objects to a single object:

const input = [{"key":"Deze week","params":{"thisWeekfilterDistance":_=>{},"thisWeekSearch":_=>{},"thisWeektoggleFilter":_=>{},"thisWeektoggleRangeFilter":_=>{},},"routeName":"Deze week",},{"key":"Binnenkort","params":{"soonfilterDistance":_=>{},"soonSearch":_=>{},"soontoggleFilter":_=>{},"soontoggleRangeFilter":_=>{},},"routeName":"Binnenkort",},{"key":"Festivals","params":{"festivalfilterDistance":_=>{},"festivalSearch":_=>{},"festivaltoggleFilter":_=>{},"festivaltoggleRangeFilter":_=>{},},"routeName":"Festivals",},]

const output = Object.assign({}, ...input.map(a => a.params))
console.log(output)

Sign up to request clarification or add additional context in comments.

Comments

1

You could do with Array#reduce direct array not with array object params

var arr = [{ "key": "Deze week", "params":  { "thisWeekfilterDistance": "[Function anonymous]", "thisWeekSearch": "[Function anonymous]", "thisWeektoggleFilter": "[Function anonymous]", "thisWeektoggleRangeFilter": "[Function anonymous]", }, "routeName": "Deze week", }, { "key": "Binnenkort", "params":  { "soonfilterDistance": "[Function anonymous]", "soonSearch": "[Function anonymous]", "soontoggleFilter": "[Function anonymous]", "soontoggleRangeFilter": "[Function anonymous]", }, "routeName": "Binnenkort", }, { "key": "Festivals", "params":  { "festivalfilterDistance": "[Function anonymous]", "festivalSearch": "[Function anonymous]", "festivaltoggleFilter": "[Function anonymous]", "festivaltoggleRangeFilter": "[Function anonymous]", }, "routeName": "Festivals", }, ]

var res = arr.reduce((a,b)=> Object.assign(a,b.params),{})

console.log(res)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.