I'm trying to merge multiple objects in one array these objects share keys , but these keys are unknown. for example
var obj = {
"127.0.0.1:26969" : 1,
"127.0.0.2:26969" : 1,
"127.0.0.3:26969" : 1,
"127.0.0.4:26969" : 1,
}
var obj1 = {
"127.0.0.1:26969" : 1001,
"127.0.0.2:26969" : 1002,
"127.0.0.3:26969" : 1003,
"127.0.0.4:26969" : 10004,
}
var obj2 = {
"127.0.0.1:26969" : 2001,
"127.0.0.2:26969" : 2002,
"127.0.0.3:26969" : 2003,
"127.0.0.4:26969" : 2005,
}
The desired output is to be like this
var array = [
{
"ip": "127.0.0.1",
"status": "local" /// this is custom key it didn't exist in the original obj
},{
"ip": "127.0.0.2",
"status": "local-local",
"first-customkey": 1001,
"second-customkey": 2001
},etc.....
];
what i've tried till now is to compose the array containing these objects
through this method
var objCombine = [];
for (let key in obj) {
objCombine.push({
'ip': key.split(':')[0],
'status': 'local',
})
}
for (let key in obj1) {
objCombine.push({
'ip': key.split(':')[0],
'first-customkey': obj1[key],
})
}
for (let key in obj2) {
objCombine.push({
'ip': key.split(':')[0],
'second-customkey': obj2[key],
})
}
The output was similar to the desired result , but i have now an array that contains multiple objects that has unknown shared keys, the question how to merge each object with the its key pair.
Now i've tried this
function extend (array) {
var newArray = [];
var extended = {};
var merge = function (obj, callback) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
extended[prop] = obj[prop];
}
}
callback(extended);
};
array.forEach(arg => merge(arg, callback));
function callback (extended) {
if (Object.keys(extended).length === 4) {
console.log(extended);
newArray.push(extended);
}
}
return newArray;
};
extend(objCombine);
but i get only the last object repeated like this
[
{
"ip": "127.0.0.4",
"status": "local",
"first-customkey": 10004,
"second-customkey": 2005
},
{
"ip": "127.0.0.4",
"status": "local",
"first-customkey": 10004,
"second-customkey": 2005
},
{
"ip": "127.0.0.4",
"status": "local",
"first-customkey": 10004,
"second-customkey": 2005
},
{
"ip": "127.0.0.4",
"status": "local",
"first-customkey": 10004,
"second-customkey": 2005
}
]
the last object is repeated 4 times.
NOTE status: "local", i want to be repeated in each object. just like above it's static values.
PS all data that is provided in the example is not real live data it's just to explain my example.
arr=[{obj1},{obj2},{obj}];