I have A json Object that contain some keys/values one of the values is an array I want combining the value of array from all recorded that have same key this is my Json Object
data=
[
{"key":11,"numbers":[555,556,557]},
{"key":22,"numbers":[444,772,995,667]},
{"key":11,"numbers":[223,447]},
{"key":45,"numbers":[999,558,367]}
]
I want to get the result be like this
data=
[
{"key":11,"numbers":[555,556,557,223,447]},
{"key":22,"numbers":[444,772,995,667]},
{"key":45,"numbers":[999,558,367]}
]
I tried but I don't know how to cache the value of current matched row and try to find another matched value this is my code
data=
[
{"key":11,"numbers":[555,556,557]},
{"key":22,"numbers":[444,772,995,667]},
{"key":11,"numbers":[223,447]},
{"key":45,"numbers":[999,558,367]}
];
function findDuplicates(data) {
let result = [];
data.forEach(function(element, index) {
if (data.indexOf(element, index + 1) > -1) {
if (result.indexOf(element) === -1) {
result.push(element.numbers.concat(data.indexOf(element, index + 1));
}
}
});
return result;
}
console.log( findDuplicates(data) );
You can use reduce
to group the array into an object. Use concat
to merge arrays. Use Object.values
to convert the object to array.
let data = [
{"key":11,"numbers":[555,556,557]},
{"key":22,"numbers":[444,772,995,667]},
{"key":11,"numbers":[223,447]},
{"key":45,"numbers":[999,558,367]},
{"key":45,"numbers":100}
];
let result = Object.values(data.reduce((c, {key,numbers}) => {
c[key] = c[key] || {key,numbers: []};
c[key].numbers = c[key].numbers.concat(Array.isArray(numbers) ? numbers : [numbers]);
return c;
}, {}));
console.log(result);
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments