admin 管理员组文章数量: 1086019
I have A json Object that contain some keys/values one of the values is an array I want bining 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) );
I have A json Object that contain some keys/values one of the values is an array I want bining 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) );
Share
Improve this question
asked May 28, 2018 at 13:17
Alan Nama YosufAlan Nama Yosuf
371 silver badge4 bronze badges
1 Answer
Reset to default 8You 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);
本文标签: combining duplicate values in JavaScript arrayStack Overflow
版权声明:本文标题:combining duplicate values in JavaScript array - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1744074620a2529117.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论