Я пытаюсь собрать уникальные данные json, я имею в виду, если ключ существует, обновите его значение. Но не удалось обновить значение существующего ключа.Обновить значения JSON с помощью связанного ключа
var fpr_data = [{"rfr_id":"7","user_id":"5","fp_id":"10","raw_id":"3","raw_qty":"20.00","raw_wastage":"2","raw_name":"Buttons"},
{"rfr_id":"9","user_id":"5","fp_id":"10","raw_id":"4","raw_qty":"500.00","raw_wastage":"0","raw_name":"Yarn"},
{"rfr_id":"8","user_id":"5","fp_id":"10","raw_id":"5","raw_qty":"2.00","raw_wastage":"1","raw_name":"Needle"},
{"rfr_id":"7","user_id":"5","fp_id":"10","raw_id":"3","raw_qty":"20.00","raw_wastage":"2","raw_name":"Buttons"}];
var qty = 2, coll={}, _qty=0.00,_wastage=0.00;
// Filter and modify JSON data
$.each(fpr_data, function(i, data) {
_qty = data.raw_qty * qty;
_wastage = data.raw_wastage * qty;
// Next time add on existing keys
if(coll[data.raw_id] == data.raw_id) {
var q = coll[data.raw_id].qty + _qty;
var w = coll[data.raw_id].wastage + _wastage;
coll[data.raw_id] = {"qty":q, "wastage":w};
}
else {
coll[data.raw_id] = {"qty":_qty, "wastage":_wastage};
}
});
console.log(coll);
В fpr_data
есть raw_id
, что я хочу, чтобы собрать уникальные идентификаторы, и если raw_id найти в объекте затем обновить его qty
и wastage
с raw_qty
и raw_wastage
. Я получил уникальные данные JSON, но количество и потери не получают обновления. Что я сделал? Вы можете найти те же коды в скрипке и проверить результат на консоли.
Ожидаемое: Значение qty
в 3
должно быть 80
Обратите внимание, что вы манипулируете не JSON, это массив объектов. (Это только JSON, когда и если он сериализуется в строку.) – nnnnnn
@nnnnnn, спасибо, чтобы указать мне в правильном направлении. Могу ли я манипулировать им в JSON? –
Нет, по крайней мере, не так легко, так как это будет манипулировать строкой. Вы можете манипулировать им напрямую, когда у вас есть массив объектов, как вы. – nnnnnn