Привет У меня есть массив, который выглядит так.кумулятивное суммирование/сортировка javascript
var data = [
{beb: 200, cre: 0, id: 'A1'},
{beb: 0, cre: 200, id: 'A2'},
{beb: 0, cre: 100, id: 'A4'},
{beb: 0, cre: 100, id: 'A3'},
]
Как бы я мог выглядеть так?
var newData = [
{deb: 200, cre: 0, total: 200, id: 'A1'},
{deb: 0, cre: 200, total: 0, id: 'A2'},
{deb: 0, cre: 100, total: -100, id: 'A3'},
{deb: 0, cre: 100, total: -200, id: 'A4'},
]
Важно то, что массив должен быть отсортирован по идентификатору, а затем общий рассчитываются на Deb - CRE + в общей сложности от предыдущего ряда.
В настоящее время я использую d3 в своей настройке, но я не смог найти подходящее решение для этого, вычисленное значение не сохраняется на правильном объекте, возможно, потому, что сортировка не соответствует внутри цикла ,
поэтому, если для этого используется чистое решение с помощью d3, я был бы очень доволен, потому что тогда я мог бы легко использовать карту или ключ, если позже добавлю другие атрибуты.
спасибо.
Редактировать
var calc = [];
var count = 0;
var newArr = data.sort(function(a, b){
return a.id - b.id;
})
for(var i = 0; i < newArr.length; i++){
var item = newArr[i];
count += item.deb - item.cred
calc.push({deb: item.deb, cre: item.deb, total: count, id: item.id })
}
для сортировки части я попытался как a.id - b.id
и b.id - a.id
одна проблема состоит в том, что он, кажется, не будет сделано в порядке, мне нужно, и используя этот способ, у меня нет простого способа сопоставить его с d3.js, поэтому я предпочел бы использовать это решение.
сообщение код, который вы написали, чтобы попытаться это и объяснить, что определенная часть не работает. – csmckelvey
Добро пожаловать на http://stackoverflow.com. Мы любим помогать людям при условии, что мы увидим, что они уже внедрили –
downvotes .. действительно ?? – Stellan