检查值是否为负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正在使用此函数将数据返回到图表。因此,如果他在绘制图表之前对其进行过滤,那么它将根据提供给它的数据进行绘制。很高兴我提供了帮助:)