[英]How to merge deep value in array of objects
I have an array with objects and I want to combine all values of params inside the objects into one object 我有一个包含对象的数组,我想将对象内部的所有params值合并为一个对象
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. 但是我不知道如何存储那些结果以使所有对象参数只有1个对象。
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. 谢谢。
You could use map
to get an array of params
. 您可以使用map
获得params
数组。 Then use Object.assign()
to merge the array of objects to a single object: 然后使用Object.assign()
将对象数组合并为一个对象:
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)
You could do with Array#reduce
direct array not with array object params 您可以使用Array#reduce
直接数组而不使用数组对象参数
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.