检查值是否为负javascript对象数组

检查值是否为负javascript对象数组,javascript,jquery,Javascript,Jquery,我有以下代码用于获取图表的数据: 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(/[^

我有以下代码用于获取图表的数据:

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;
}
问题是当利润为负值时,它就会打破图表。现在我需要检查“利润”(“利润”:data.data[0].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))
}

有人知道我如何检查这个吗?

我想你可以使用javascript中的过滤函数来实现这一点

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

现在,u将只有正利润或零利润的数据。

是否确实要从数组中删除该值。。。我曾经处理过图表,每个数据点都映射到x轴或y轴数据,删除它们将使数据移动1个索引。如果您能提供有效的代码段,这将非常有用。您在初始化
数据之前调用
createLegend(data,…)
我确定要从数组中删除值。是的,我正在调用该方法,对于图例,我使用此数据值createData(data)。如果此代码按预期工作,我建议您前往获取一些关于如何改进函数的输入。因为它是图形中的数据点,您不认为它会影响图形吗?我认为OP正在使用此函数将数据返回到图表。因此,如果他在绘制图表之前对其进行过滤,那么它将根据提供给它的数据进行绘制。很高兴我提供了帮助:)