Javascript 根据值的权重从JSON对象中删除重复值
我不熟悉JS和JSON。我有一个像这样的JSON对象Javascript 根据值的权重从JSON对象中删除重复值,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我不熟悉JS和JSON。我有一个像这样的JSON对象 {"q1":[{"name":"p1","weight":64},{"name":"p3","weight":56}],"q2":[{"name":"p1","weight":56},{"name":"p2","weight":56},{"name":"p4","weight":56},{"name":"p5","weight":56},{"name":"p6","weight":64}],"q3":[{"name":"p1","weight
{"q1":[{"name":"p1","weight":64},{"name":"p3","weight":56}],"q2":[{"name":"p1","weight":56},{"name":"p2","weight":56},{"name":"p4","weight":56},{"name":"p5","weight":56},{"name":"p6","weight":64}],"q3":[{"name":"p1","weight":48},{"name":"p2","weight":64},{"name":"p3","weight":64}],"q4":[{"name":"p1","weight":64},{"name":"p1","weight":106},{"name":"p2","weight":56},{"name":"p3","weight":56},{"name":"p3","weight":112}],"q5":[{"name":"p1","weight":64},{"name":"p1","weight":113},{"name":"p2","weight":49},{"name":"p3","weight":56},{"name":"p3","weight":56},{"name":"p4","weight":49},{"name":"p5","weight":49},{"name":"p6","weight":56}],"q6":[]}
我想删除重复的值,只保留一个最大权重的值,就像Q4一样,我有两个P1值。但我这里只需要1个,最大的重量是106
我想要一个像这样的东西
{"q1":[{"name":"p1","weight":64},{"name":"p3","weight":56}],"q2":[{"name":"p1","weight":56},{"name":"p2","weight":56},{"name":"p4","weight":56},{"name":"p5","weight":56},{"name":"p6","weight":64}],"q3":[{"name":"p1","weight":48},{"name":"p2","weight":64},{"name":"p3","weight":64}],"q4":[{"name":"p1","weight":106},{"name":"p2","weight":56},{"name":"p3","weight":112}],"q5":[{"name":"p1","weight":113},{"name":"p2","weight":49},{"name":"p3","weight":56},{"name":"p4","weight":49},{"name":"p5","weight":49},{"name":"p6","weight":56}],"q6":[]}
函数keepBiggest(arr){//获取一个对象数组并返回具有最大权重的唯一值
var hash={};//哈希对象的哈希值为最大值
forEach(函数(o){//对于数组arr中的每个对象o
if(hash[o.name]){//如果我们已经对这个对象进行了hash,那么它就是一个同名的对象
if(hash[o.name].weight console.log(对象)代码>创建一个使用名称作为键的对象,值为权重。循环遍历原始数组,测试当前元素的权重是否大于对象对应元素中的权重。