2017-06-14 13 views
1
私はこのようなJSON配列を過ごしてい

JSON配列から重複したオブジェクトを削除する方法

daysdif = [{ 
    "EmployeeID": "213654654", 
    "DaysDiff": "NaN" 
}, { 
    "EmployeeID": "String", 
    "DaysDiff": "NaN" 
}, { 
    "EmployeeID": "6021240", 
    "DaysDiff": "-63.30" 
}, { 
    "EmployeeID": "6011327", 
    "DaysDiff": "-35.67" 
}, { 
    "EmployeeID": "883", 
    "DaysDiff": "-63.40" 
}, { 
    "EmployeeID": "1183", 
    "DaysDiff": "-70.13" 
}, { 
    "EmployeeID": "1240", 
    "DaysDiff": "-70.97" 
}, { 
    "EmployeeID": "2293", 
    "DaysDiff": "-63.30" 
}, { 
    "EmployeeID": "5001839", 
    "DaysDiff": "-8.47" 
}, { 
    "EmployeeID": "5001839", 
    "DaysDiff": "-22.20" 
}, { 
    "EmployeeID": "5001839", 
    "DaysDiff": "-23.77" 
}, { 
    "EmployeeID": "5001839", 
    "DaysDiff": "-41.67" 
}, { 
    "EmployeeID": "5001839", 
    "DaysDiff": "-63.97" 
}, { 
    "EmployeeID": "3395", 
    "DaysDiff": "-68.00" 
}, { 
    "EmployeeID": "2473", 
    "DaysDiff": "-66.20" 
}, { 
    "EmployeeID": "1075", 
    "DaysDiff": "-70.17" 
}, { 
    "EmployeeID": "2947", 
    "DaysDiff": "-69.10" 
}, { 
    "EmployeeID": "5002196", 
    "DaysDiff": "-4.97" 
}, { 
    "EmployeeID": "5002196", 
    "DaysDiff": "-39.23" 
}, { 
    "EmployeeID": "5002196", 
    "DaysDiff": "-58.73" 
}, { 
    "EmployeeID": "1688", 
    "DaysDiff": "-67.40" 
}, { 
    "EmployeeID": "2031", 
    "DaysDiff": "-54.07" 
}, { 
    "EmployeeID": "1484", 
    "DaysDiff": "-69.17" 
}, { 
    "EmployeeID": "1022", 
    "DaysDiff": "-69.40" 
}] 

このJSON配列のように重複値があり、私は最高のDaysDiff値を維持する必要があり

[{ 
    "EmployeeID": "5001839", 
    "DaysDiff": "-8.47" 
}, { 
    "EmployeeID": "5001839", 
    "DaysDiff": "-22.20" 
}, { 
    "EmployeeID": "5001839", 
    "DaysDiff": "-23.77" 
}, { 
    "EmployeeID": "5001839", 
    "DaysDiff": "-41.67" 
}, { 
    "EmployeeID": "5001839", 
    "DaysDiff": "-63.97" 
}] 

(ここで-8.47)他の重複を削除します。

+0

は、あなたが何かを試してみました?....これを試してみてください – Rajesh

+0

はい、私は重複EmployeeIDsを削除することができますが、私は最高のDaysDiff値を維持する必要があります。 – Hashan

+0

上記のdupeでは、@aefxxは最後の値を置き換えているだけです。代わりに、オブジェクトがそのキーを持っているかどうかをチェックし、そうであれば 'Math.max(ObjectValue、CurrentValue) 'を割り当てます。 – Rajesh

答えて

1
私は underscore.jsを使用して達成する方法ここで

json_data = [ 
 
    { 
 
    "EmployeeID": "213654654", 
 
    "DaysDiff": "NaN" 
 
    }, 
 
    { 
 
    "EmployeeID": "String", 
 
    "DaysDiff": "NaN" 
 
    }, 
 
    { 
 
    "EmployeeID": "6021240", 
 
    "DaysDiff": "-63.30" 
 
    }, 
 
    { 
 
    "EmployeeID": "6011327", 
 
    "DaysDiff": "-35.67" 
 
    }, 
 
    { 
 
    "EmployeeID": "883", 
 
    "DaysDiff": "-63.40" 
 
    }, 
 
    { 
 
    "EmployeeID": "1183", 
 
    "DaysDiff": "-70.13" 
 
    }, 
 
    { 
 
    "EmployeeID": "1240", 
 
    "DaysDiff": "-70.97" 
 
    }, 
 
    { 
 
    "EmployeeID": "2293", 
 
    "DaysDiff": "-63.30" 
 
    }, 
 
    { 
 
    "EmployeeID": "5001839", 
 
    "DaysDiff": "-8.47" 
 
    }, 
 
    { 
 
    "EmployeeID": "5001839", 
 
    "DaysDiff": "-22.20" 
 
    }, 
 
    { 
 
    "EmployeeID": "5001839", 
 
    "DaysDiff": "-23.77" 
 
    }, 
 
    { 
 
    "EmployeeID": "5001839", 
 
    "DaysDiff": "-41.67" 
 
    }, 
 
    { 
 
    "EmployeeID": "5001839", 
 
    "DaysDiff": "-63.97" 
 
    }, 
 
    { 
 
    "EmployeeID": "3395", 
 
    "DaysDiff": "-68.00" 
 
    }, 
 
    { 
 
    "EmployeeID": "2473", 
 
    "DaysDiff": "-66.20" 
 
    }, 
 
    { 
 
    "EmployeeID": "1075", 
 
    "DaysDiff": "-70.17" 
 
    }, 
 
    { 
 
    "EmployeeID": "2947", 
 
    "DaysDiff": "-69.10" 
 
    }, 
 
    { 
 
    "EmployeeID": "5002196", 
 
    "DaysDiff": "-4.97" 
 
    }, 
 
    { 
 
    "EmployeeID": "5002196", 
 
    "DaysDiff": "-39.23" 
 
    }, 
 
    { 
 
    "EmployeeID": "5002196", 
 
    "DaysDiff": "-58.73" 
 
    }, 
 
    { 
 
    "EmployeeID": "1688", 
 
    "DaysDiff": "-67.40" 
 
    }, 
 
    { 
 
    "EmployeeID": "2031", 
 
    "DaysDiff": "-54.07" 
 
    }, 
 
    { 
 
    "EmployeeID": "1484", 
 
    "DaysDiff": "-69.17" 
 
    }, 
 
    { 
 
    "EmployeeID": "1022", 
 
    "DaysDiff": "-69.40" 
 
    } 
 
] 
 

 
grp_json = _.groupBy(json_data, "EmployeeID") 
 

 
new_list = [] 
 

 
_.each(grp_json, function(i) { 
 
    get_max = _.max(i, "DaysDiff") 
 
    if(get_max == -Infinity) { 
 
    new_list.push(i[0])  
 
    } 
 
    else { 
 
    new_list.push(get_max) 
 
    } 
 
}) 
 

 
console.log('new_list', new_list)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

0

これを試してみてください。

var daysdif = [{ 
 
    "EmployeeID": "213654654", 
 
    "DaysDiff": "NaN" 
 
}, { 
 
    "EmployeeID": "String", 
 
    "DaysDiff": "NaN" 
 
}, { 
 
    "EmployeeID": "6021240", 
 
    "DaysDiff": "-63.30" 
 
}, { 
 
    "EmployeeID": "6011327", 
 
    "DaysDiff": "-35.67" 
 
}, { 
 
    "EmployeeID": "883", 
 
    "DaysDiff": "-63.40" 
 
}, { 
 
    "EmployeeID": "1183", 
 
    "DaysDiff": "-70.13" 
 
}, { 
 
    "EmployeeID": "1240", 
 
    "DaysDiff": "-70.97" 
 
}, { 
 
    "EmployeeID": "2293", 
 
    "DaysDiff": "-63.30" 
 
}, { 
 
    "EmployeeID": "5001839", 
 
    "DaysDiff": "-8.47" 
 
}, { 
 
    "EmployeeID": "5001839", 
 
    "DaysDiff": "-22.20" 
 
}, { 
 
    "EmployeeID": "5001839", 
 
    "DaysDiff": "-23.77" 
 
}, { 
 
    "EmployeeID": "5001839", 
 
    "DaysDiff": "-41.67" 
 
}, { 
 
    "EmployeeID": "5001839", 
 
    "DaysDiff": "-63.97" 
 
}, { 
 
    "EmployeeID": "3395", 
 
    "DaysDiff": "-68.00" 
 
}, { 
 
    "EmployeeID": "2473", 
 
    "DaysDiff": "-66.20" 
 
}, { 
 
    "EmployeeID": "1075", 
 
    "DaysDiff": "-70.17" 
 
}, { 
 
    "EmployeeID": "2947", 
 
    "DaysDiff": "-69.10" 
 
}, { 
 
    "EmployeeID": "5002196", 
 
    "DaysDiff": "-4.97" 
 
}, { 
 
    "EmployeeID": "5002196", 
 
    "DaysDiff": "-39.23" 
 
}, { 
 
    "EmployeeID": "5002196", 
 
    "DaysDiff": "-58.73" 
 
}, { 
 
    "EmployeeID": "1688", 
 
    "DaysDiff": "-67.40" 
 
}, { 
 
    "EmployeeID": "2031", 
 
    "DaysDiff": "-54.07" 
 
}, { 
 
    "EmployeeID": "1484", 
 
    "DaysDiff": "-69.17" 
 
}, { 
 
    "EmployeeID": "1022", 
 
    "DaysDiff": "-69.40" 
 
}]; 
 

 
var newArray = []; 
 
var isExist = true;; 
 

 
daysdif.forEach(function(data){ 
 
    isExist = true; 
 
    if(data["DaysDiff"] !== "NaN"){ 
 
    newArray.forEach(function(obj){ 
 
     if(obj["EmployeeID"] == data["EmployeeID"]){ 
 
      newArray["DaysDiff"] = Math.max(parseFloat(data["DaysDiff"]), parseFloat(newArray["DaysDiff"])).toString(); 
 
      isExist = false; 
 
     } 
 
    }); 
 
     if(isExist){ 
 
      newArray.push(data); 
 
     } 
 
    } 
 
}); 
 
console.log(newArray);

0

var uniqueEmp=[]; 
for(var emp in daysdif){ 
    if(uniqueEmp.indexOf(daysdif[emp]['EmployeeID'])!=-1){ 
     daysdif.splice(emp,1); 
    }else 
     uniqueEmp.push(daysdif[emp]['EmployeeID']) 
} 
console.log(daysdif) 
関連する問題