Give an array of objects as below:
JavaScript
x
2
1
var objArray = [{'key': 'key1', 'fields': [1, 2]}, {'key': 'key2', 'fields': [3, 4]}];
2
I would like to get an array of merged items from fields property and output should be 1, 2, 3, 4
I’ve tried to merge as below. I’m not satisfied with my solution and would like to get feedback’s and improve upon my solution. I’m new to JS and typescript. I believe there is better solution with features of ES6. Can someone help to improve my solution?
JavaScript
1
20
20
1
function mergeArraysFromObjectArray(objArray){
2
let allFields = [];
3
for (let obj of objArray) {
4
for (let propt in obj) {
5
if (obj.hasOwnProperty(propt) && propt === 'fields') {
6
allFields = allFields.concat(obj[propt]);
7
}
8
}
9
}
10
11
return allFields;
12
}
13
14
var objArray = [{'key': 'key1', 'fields': [1, 2]}, {'key': 'key2', 'fields': [3, 4]}];
15
let allMergedFields = mergeArraysFromObjectArray(objArray);
16
17
for(let i=0; i < allMergedFields.length; i++){
18
console.log(allMergedFields[i]); //prints - 1, 2, 3, 4
19
}
20
Advertisement
Answer
You can simply concat
the array and create a new array inside a loop:
JavaScript
1
8
1
var objArray = [{'key': 'key1', 'fields': [1, 2]}, {'key': 'key2', 'fields': [3, 4]}];
2
3
var result = [];
4
for(var i=0; i<objArray.length; i++){
5
result = result.concat(objArray[i].fields);
6
}
7
8
console.log(result);