Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check is value negative javascript object array

I have this code for getting data for chart:

function createData(data) {
    if ($("#options").val() == 1) {
        var totalTopProfit = eval(data.data[0].profit.replace(/[^\d\.]/g, '') + '+' + data.data[1].profit.replace(/[^\d\.]/g, '') + '+' + data.data[2].profit.replace(/[^\d\.]/g, '') + '+' + data.data[3].profit.replace(/[^\d\.]/g, '')).toFixed(2);
        var totalProfit = eval(data.others.replace(/[^\d\.]/g, ''));
        var othersProfit = parseFloat(totalProfit) - totalTopProfit;

        createLegend(data, othersProfit, 1);

        var data = [{
            "company": data.data[0].company,
            "profit": data.data[0].profit,
            "percentage": parseFloat(eval((data.data[0].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[1].company,
            "profit": data.data[1].profit,
            "percentage": parseFloat(eval((data.data[1].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[2].company,
            "profit": data.data[2].profit,
            "percentage": parseFloat(eval((data.data[2].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[3].company,
            "profit": data.data[3].profit,
            "percentage": parseFloat(eval((data.data[3].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": "Others",
            "profit": numberWithCommas(othersProfit.toFixed(2)),
            "percentage": parseFloat(eval((othersProfit / totalProfit) * 100).toFixed(2))
        }];
    } else if ($("#options").val() == 2) {
        var totalTopProfit = eval(data.data[0].revenue.replace(/[^\d\.]/g, '') + '+' + data.data[1].revenue.replace(/[^\d\.]/g, '') + '+' + data.data[2].revenue.replace(/[^\d\.]/g, '') + '+' + data.data[3].revenue.replace(/[^\d\.]/g, '')).toFixed(2);
        var totalProfit = eval(data.others.replace(/[^\d\.]/g, ''));
        var othersProfit = parseFloat(totalProfit) - totalTopProfit;

        createLegend(data, othersProfit, 2);

        var data = [{
            "company": data.data[0].company,
            "profit": data.data[0].revenue,
            "percentage": parseFloat(eval((data.data[0].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[1].company,
            "profit": data.data[1].revenue,
            "percentage": parseFloat(eval((data.data[1].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[2].company,
            "profit": data.data[2].revenue,
            "percentage": parseFloat(eval((data.data[2].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[3].company,
            "profit": data.data[3].revenue,
            "percentage": parseFloat(eval((data.data[3].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": "Others",
            "profit": numberWithCommas(othersProfit.toFixed(2)),
            "percentage": parseFloat(eval((othersProfit / totalProfit) * 100).toFixed(2))
        }];
    } else if ($("#options").val() == 3) {
        var totalTopProfit = eval(data.data[0].profit.replace(/[^\d\.]/g, '') + '+' + data.data[1].profit.replace(/[^\d\.]/g, '') + '+' + data.data[2].profit.replace(/[^\d\.]/g, '') + '+' + data.data[3].profit.replace(/[^\d\.]/g, '')).toFixed(2);
        var totalProfit = eval(data.others.replace(/[^\d\.]/g, ''));
        var othersProfit = parseFloat(totalProfit) - totalTopProfit;

        createLegend(data, othersProfit, 3);

        var data = [{
            "company": data.data[0].offer,
            "profit": data.data[0].profit,
            "percentage": parseFloat(eval((data.data[0].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[1].offer,
            "profit": data.data[1].profit,
            "percentage": parseFloat(eval((data.data[1].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[2].offer,
            "profit": data.data[2].profit,
            "percentage": parseFloat(eval((data.data[2].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[3].offer,
            "profit": data.data[3].profit,
            "percentage": parseFloat(eval((data.data[3].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": "Others",
            "profit": numberWithCommas(othersProfit.toFixed(2)),
            "percentage": parseFloat(eval((othersProfit / totalProfit) * 100).toFixed(2))
        }];
    } else if ($("#options").val() == 4) {
        var totalTopProfit = eval(data.data[0].revenue.replace(/[^\d\.]/g, '') + '+' + data.data[1].revenue.replace(/[^\d\.]/g, '') + '+' + data.data[2].revenue.replace(/[^\d\.]/g, '') + '+' + data.data[3].revenue.replace(/[^\d\.]/g, '')).toFixed(2);
        var totalProfit = eval(data.others.replace(/[^\d\.]/g, ''));
        var othersProfit = parseFloat(totalProfit) - totalTopProfit;

        createLegend(data, othersProfit, 4);

        var data = [{
            "company": data.data[0].offer,
            "profit": data.data[0].revenue,
            "percentage": parseFloat(eval((data.data[0].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[1].offer,
            "profit": data.data[1].revenue,
            "percentage": parseFloat(eval((data.data[1].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[2].offer,
            "profit": data.data[2].revenue,
            "percentage": parseFloat(eval((data.data[2].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[3].offer,
            "profit": data.data[3].revenue,
            "percentage": parseFloat(eval((data.data[3].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": "Others",
            "profit": numberWithCommas(othersProfit.toFixed(2)),
            "percentage": parseFloat(eval((othersProfit / totalProfit) * 100).toFixed(2))
        }];
    } else if ($("#options").val() == 5) {
        var totalTopProfit = eval(data.data[0].profit.replace(/[^\d\.]/g, '') + '+' + data.data[1].profit.replace(/[^\d\.]/g, '') + '+' + data.data[2].profit.replace(/[^\d\.]/g, '') + '+' + data.data[3].profit.replace(/[^\d\.]/g, '')).toFixed(2);
        var totalProfit = eval(data.others.replace(/[^\d\.]/g, ''));
        var othersProfit = parseFloat(totalProfit) - totalTopProfit;

        createLegend(data, othersProfit, 5);

        var data = [{
            "company": data.data[0].advertiser,
            "profit": data.data[0].profit,
            "percentage": parseFloat(eval((data.data[0].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[1].advertiser,
            "profit": data.data[1].profit,
            "percentage": parseFloat(eval((data.data[1].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[2].advertiser,
            "profit": data.data[2].profit,
            "percentage": parseFloat(eval((data.data[2].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[3].advertiser,
            "profit": data.data[3].profit,
            "percentage": parseFloat(eval((data.data[3].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": "Others",
            "profit": numberWithCommas(othersProfit.toFixed(2)),
            "percentage": parseFloat(eval((othersProfit / totalProfit) * 100).toFixed(2))
        }];
    } else if ($("#options").val() == 6) {
        var totalTopProfit = eval(data.data[0].revenue.replace(/[^\d\.]/g, '') + '+' + data.data[1].revenue.replace(/[^\d\.]/g, '') + '+' + data.data[2].revenue.replace(/[^\d\.]/g, '') + '+' + data.data[3].revenue.replace(/[^\d\.]/g, '')).toFixed(2);
        var totalProfit = eval(data.others.replace(/[^\d\.]/g, ''));
        var othersProfit = parseFloat(totalProfit) - totalTopProfit;

        createLegend(data, othersProfit, 6);

        var data = [{
            "company": data.data[0].advertiser,
            "profit": data.data[0].revenue,
            "percentage": parseFloat(eval((data.data[0].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[1].advertiser,
            "profit": data.data[1].revenue,
            "percentage": parseFloat(eval((data.data[1].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[2].advertiser,
            "profit": data.data[2].revenue,
            "percentage": parseFloat(eval((data.data[2].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": data.data[3].advertiser,
            "profit": data.data[3].revenue,
            "percentage": parseFloat(eval((data.data[3].revenue.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
        }, {
            "company": "Others",
            "profit": numberWithCommas(othersProfit.toFixed(2)),
            "percentage": parseFloat(eval((othersProfit / totalProfit) * 100).toFixed(2))
        }];
    }
    return data;
}

Problem is when profit have negative value, then it break chart. Now i need to check is "profit" ("profit": data.data[0].profit) negative and if it is, then i need to remove all this data for that profit that have negative value and in data return only datas that have positive profit.

{
    "company": data.data[0].company,
    "profit": data.data[0].profit,
    "percentage": parseFloat(eval((data.data[0].profit.replace(/[^\d\.]/g, '') / totalProfit) * 100).toFixed(2))
}

Does anyone know how can i check this?

like image 394
alonso05 Avatar asked Nov 17 '25 04:11

alonso05


1 Answers

I think you can use filter function in javascript to achieve this.

data=data.data.filter((d)=>{// as your data array is inside data object
return d.profit>=0;
})

Now u will have only data which have positive or zero profit.

like image 82
orangespark Avatar answered Nov 18 '25 17:11

orangespark



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!