Как посчитать одни и те же данные в JSON? - PullRequest
1 голос
/ 18 февраля 2020

JSON для подсчета:

[{"thn":"2017","jumlah":"30"},{"thn":"2018","jumlah":"80"},{"thn":"2018","jumlah":"64"},{"thn":"2018","jumlah":"5"},{"thn":"2018","jumlah":"1"},{"thn":"2018","jumlah":"1"},{"thn":"2018","jumlah":"4"},{"thn":"2018","jumlah":"5"},{"thn":"2018","jumlah":"198"},{"thn":"2018","jumlah":"2"},{"thn":"2018","jumlah":"202"},{"thn":"2019","jumlah":"31"},{"thn":"2019","jumlah":"1"}]

это мой код

var data_nama=[];
var data_jumlah=[];

$.post("<?=base_url('Welcome/checkData')?>",
    function(data){
        var obj = JSON.parse(data);
        $.each(obj,function(test,item){
            data_nama.push(item.thn);
            data_jumlah.push(item.jumlah);
        });

Как добавить тот же год, например

2018 должен 562, не 80, 64

извините за мой плохой английский sh> <</p>

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Вы можете использовать reduce(), чтобы легко выполнить sh это:

// Your JSON data
let data = [{'thn': '2017', 'jumlah': '30'}, {'thn': '2018', 'jumlah': '80'}, {'thn': '2018', 'jumlah': '64'}, {'thn': '2018', 'jumlah': '5'}, {'thn': '2018', 'jumlah': '1'}, {'thn': '2018', 'jumlah': '1'}, {'thn': '2018', 'jumlah': '4'}, {'thn': '2018', 'jumlah': '5'}, {'thn': '2018', 'jumlah': '198'}, {'thn': '2018', 'jumlah': '2'}, {'thn': '2018', 'jumlah': '202'}, {'thn': '2019', 'jumlah': '31'}, {'thn': '2019', 'jumlah': '1'}];

let counts = data.reduce((acc, {thn, jumlah}) => {
    if (!acc[thn]) {
        acc[thn] = 0;
    }
    acc[thn] += parseInt(jumlah);

    return acc;
}, {});

Это установит counts в:

{2017: 30, 2018: 562, 2019: 32}
0 голосов
/ 18 февраля 2020

Поскольку он помечен PHP, ниже приведен процесс:

1.Декодируйте ваши json данные через json_decode()

2. Итерируйте этот массив декодирования.

3.Добавить значения jumlah на основе thn путем создания нового массива (используя thn в качестве индекса).

4. Переиндексировать массив через array_values().

5.Кодировать новые данные массива через json_encode().

$array = json_decode($json,true);

$finalArray = array();

foreach($array as $arr){

    $finalArray[$arr['thn']]['jumlah'] = (isset($finalArray[$arr['thn']]['jumlah']) ? $finalArray[$arr['thn']]['jumlah'] + $arr['jumlah']: $arr['jumlah']);
    $finalArray[$arr['thn']]['thn'] = $arr['thn'];
}
$finalArray = array_values($finalArray);
echo json_encode($finalArray);

Вывод: https://3v4l.org/hZWUh

Примечание: - Делать выше на PHP конце и не нужно менять jQuery код. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...