Need help with repeater, array & dataset.

Hi, I’ve the following code and everything is working for this well. But when I change the dropdown value then the sum of arro(arr) function repeats the double value. Could anyone helps me out?


import wixData from 'wix-data';
import wixUsers from 'wix-users';
import wixSearch from 'wix-search';
import { local } from 'wix-storage';
import wixWindow from 'wix-window';

$w.onReady(() => {
    var arr = [];
    interestsum(arr);
    $w("#totalsumdisplay").html = "<p style='font-size: 25px; font-style: avenir; text-align: right; color: black;'>Calculating...</p>";
        $w('#dataset1').onReady(() => {
            $w("#repeater1").onItemReady(($item, itemData, index) => {
            mysum2();
              var getting = parseFloat($item("#text19").text);
            if ($item("#text20").text === "Debit") {
                var value = (-1 * getting);
                $item("#text19").html = "<p style='font-size: 18px; font-style: avenir; text-align: right; color: red;'>" + value.toLocaleString('en-IN', {
                    maximumFractionDigits: 2,
                    style: 'currency',
                    currency: 'INR'
                }); + "</p>";
            } else {
                var value = getting;
                $item("#text19").html = "<p style='font-size: 18px; font-style: avenir; text-align: right; color: green;'>" + value.toLocaleString('en-IN', {
                    maximumFractionDigits: 2,
                    style: 'currency',
                    currency: 'INR'
                }); + "</p>";
            }
        })
    })
    $w('#dropdown1').onChange(() => {
        //$w('#dataset1').setFilter(wixData.filter().eq("_owner", wixUsers.currentUser.id).eq("expenseFor", $w('#dropdown1').value));
        arro(arr);
        mysum2();
    });
    $w('#dropdown2').onChange(() => {
        //$w('#dataset1').setFilter(wixData.filter().eq("_owner", wixUsers.currentUser.id).eq("type", $w('#dropdown2').value));
         arro(arr);
        mysum2();
    });

    $w('#resetfilter').onClick(() => {
        mysum2();
        $w("#dropdown1").value = "";
        $w("#dropdown2").value = "";
        arro(arr);
    })
});

function interestsum(arr) {
        $w('#dataset1').onReady(() => {
            $w("#repeater1").onItemReady(($item, itemData, index) => {
            $item('#datePicker1').value = (itemData.date);
            var a = (itemData.date);
            var b = new Date()
            $item('#datePicker2').value = b;
            
            $item('#days').text = (a-b).toString();
         
            var principal = (itemData.amount);
            let user = wixUsers.currentUser;
            let userId = user.id;
            if (wixUsers.currentUser.loggedIn) {
                wixData.query("transfirm").eq("_owner", wixUsers.currentUser.id).eq("name", $item('#rate').value)
                    .find()
                    .then((results) => {
                        let queryItems = results.items;
                        queryItems.forEach((item, idx) => {
                            for (idx = 0; idx <= queryItems.length; idx++) {
                                if ($item('#text18').text === item.name) {
                                    $item('#rate').text = item.rateofinterest;

                                    var rate = parseFloat($item('#rate').text);
                                    if ($item('#text20').text === "Debit") {
                                        var myrate = rate * (-1);
                                    } else {
                                        var myrate = parseFloat(rate);
                                    }
                                }
                            }
                            var days = parseFloat($item('#days').text);

                            if (!isNaN(rate)) {
                                var interest = parseFloat((principal * myrate * days) / 36000);
                                if (interest >= 0) {
                                    var creobj = ($item('#text44').text);
                                    $item('#interest').html = interest.toString();
                                    var obj = { type: "Credit", principal: principal, days: days, interest: interest, expfo: creobj };
                                    arr.push(obj);
                                } else {
                                    var debobj = ($item('#text44').text);
                                    $item('#interest').html = interest.toString();
                                    var obj = { type: "Debit", principal: principal, days: days, interest: interest, expfo: debobj };
                                    arr.push(obj);
                                }
							arro(arr);
                            }
                        
                        })
                        
                    })
            }
        })
    })
}

function arro(arr) {
    
    if ($w('#dropdown1').value === "" && $w('#dropdown2').value === ""){
        var originarray =  arr;
        var myarr = originarray;
         var ragg = myarr.reduce((ao, co) => ao + co.interest, 0); 
        console.log(ragg);
        $w('#text43').text = ragg.toString();        
     }
    else if ($w('#dropdown1').value !== "" && $w('#dropdown2').value === ""){
        var originarray =  arr;
        var myarr = originarray;
    let doo = myarr.filter(function (currentElement) {
         if (!isNaN(currentElement.interest)){
            return currentElement.expfo === $w('#dropdown1').value; }       
    });
    console.log(doo);
    var ragg = doo.reduce((ao, co) => ao + co.interest, 0);
     console.log(ragg);
            $w('#text43').text = ragg.toString();
    }

    else if ($w('#dropdown1').value === "" && $w('#dropdown2').value !== ""){
        var originarray =  arr;
        var myarr = originarray;
    let doo = myarr.filter(function (currentElement) {
        if (!isNaN(currentElement.interest)){
            return currentElement.type === $w('#dropdown2').value;   }        
    });
    console.log(doo);
    var ragg = doo.reduce((ao, co) => ao + co.interest, 0);
     console.log(ragg);
            $w('#text43').text = ragg.toString();
    }

    else {
        var originarray =  arr;
        var myarr = originarray;
    let doo = myarr.filter(function (currentElement) {
        if (!isNaN(currentElement.interest)){
            return currentElement.type === $w('#dropdown2').value && currentElement.expfo === $w('#dropdown1').value;       
    }});
    console.log(doo);
    var ragg = doo.reduce((ao, co) => ao + co.interest, 0);
     console.log(ragg);
     $w('#text43').text = ragg.toString();
    }
}

function mysum2(arr) {
        $w("#dataset1").getItems(0, 10000)
            .then(r => {
                const items = r.items;
                var sumdebit = items.filter(({ type }) => type === 'Debit')
                    .reduce((a, c) => a + c.amount, 0);
                sumdebit = (-1 * sumdebit);

                var sumcredit = items.filter(({ type }) => type === 'Credit')
                    .reduce((a, c) => a + c.amount, 0);

                var total = sumdebit + sumcredit;

                if (total > 0) {
                    $w('#totalsumdisplay').html = "<p style='font-size: 25px; font-style: avenir; text-align: right; color: green;'>" + total.toLocaleString('en-IN', {
                        maximumFractionDigits: 2,
                        style: 'currency',
                        currency: 'INR'
                    }); + "</p>";
                } else {
                    $w('#totalsumdisplay').html = "<p style='font-size: 25px; font-style: avenir; text-align: right; color: red;'>" + total.toLocaleString('en-IN', {
                        maximumFractionDigits: 2,
                        style: 'currency',
                        currency: 'INR'
                    }); + "</p>";
                }
            }) // then brackets
// repeater brackets
} // function my sum brackets

This code is too long (for reviewing).
Try to create a shorter version and use it as an example.