如何检查JSON数组是否等于
How to check if JSON array is equal to
我正在用JSON和Flot创建饼图。创建饼图的JS函数从Django接收一个JSON数组,格式如下:
[1, 3, 2, 5, 4]
如果没有数据,JSON数组为:
[0, 0, 0, 0, 0]
我正在尝试调整函数,这样如果没有数据,就不会绘制饼图,而是会显示一些文本(例如"还没有显示任何内容")。到目前为止,我已经尝试过:
function loadWeekChart(theData) {
var blankData = [0, 0, 0, 0, 0];
if ($.data(theData) == $.data(blankData)){
$('#week-pie-chart').empty().append('Nothing to show yet');
} else {
$.plot($("#week-pie-chart"), theData ,
{
series: {
pie: {
show: true
}
}
});
}
}
JS没有失败,但它既没有打印饼图(没有数据),也没有给我文本替换。
有人能告诉我哪里出了问题吗!
Personaly我会在psuedo代码中执行以下操作。。。
set boolean to true
for each element in the JSON
compare it with blank data element
if they are not equal boolean false
else continue
return boolean
那个么你们就会知道,若和那个函数一样,若它们是false,那个么它们是否返回true。
如果您需要编码帮助,请告诉我。不应该那么难吗
这也可能有帮助:类似问题
function checkJsons(otherJson,newJson)
{
var sameJson = true;
for (var key in otherJson) {
if(otherJson[key] != newJson[key]) {sameJson=false;} return sameJson;
}
}
这应该有帮助,而不是测试
一个更好但更难阅读的方法是
function checkJsons(otherJson,newJson)
{
for (var key in otherJson) {if(otherJson[key] != newJson[key]) {return false;}}
return true;
}
function pieChartData(theData)
{
var blankData = [0, 0, 0, 0, 0];
if(checkJsons(blankData,theData)){$('#week-pie-chart').empty().append('Nothing to show yet');} else { // do your code here // }
}
我应该认为这样的东西应该有效:
var replace = true;
for(var i = 0; i < theData.length; i++)
{
if(theData.[i] != 0)
{
replace = false;
break;
}
}
if(replace)
{
$('#week-pie-chart').empty().append('Nothing to show yet');
}
else
{
$.plot($("#week-pie-chart"), theData ,
{
series: {
pie: {
show: true
}
}
});
}
使用JSON.stringify怎么样?
l1 = [0, 0, 0, 0];
l2 = [0, 0, 0, 1];
var bEqual = JSON.stringify(l1) == JSON.stringify(l2);
console.log(bEqual);
您不需要与0填充数组进行比较。只需检查输入数组是否为0填充即可。我认为reduce()
是最好的:
if(arr.reduce(function(a, b){ return a + b; }) == 0) {
//Nothing to show
} else {
...
但是旧的浏览器不支持reduce(),所以我建议使用$.grep()
(因为您已经在使用jQuery)。
if($.grep(theData, function (a) { return a != 0; }).length == 0) {
//Nothing to show
} else {
...
var areJSONArraysEqual = function(jsonArray1,
jsonArray2) {
if(jsonArray1.length===0||jsonArray2.length===0){
if(jsonArray1.length===0 && jsonArray2.length===0){
return true;
}else{
return false;
}
}
for(var i=0;i<jsonArray1.length;i++){
for ( var key in jsonArray1[i]) {
if(jsonArray1[i][key].length>1){
return areJSONArraysEqual(jsonArray1[i][key],jsonArray2[i][key])
}
if (jsonArray1[i][key] != jsonArray2[i][key]) {
return false;
}
}
}
return true;
};
相关文章:
- 查找对象数组是否包含其中一个标记的最快方法
- 检查数组是否包含
- 确定数组是否包含偶数
- 在 JavaScript 中连接字符串或数组是否更快
- 检查对象数组是否具有所有必需的键
- 检查数组是否包含指定的对象
- 在通过套接字发送到客户端之前压缩中等大小的javascript数组是否值得
- 检查数组是否有空元素
- 检查输入框的数组是否为空
- 如何检查JSON数组是否等于
- 检查数组是否已定义并且具有长度
- 检查数组是否包含特定对象
- 什么'最合适的数据结构是什么?(使用一个有间隙的数组是否存在缺点或注意事项?)
- 如何检查子集数组是否包含超集数组之一
- 检查对象数组是否包含布尔值true/false
- 检查数组是否在MongoDB文档中包含帖子ID
- 检查数组是否包含允许或不允许的字符
- 检查 javascript 数组是否不仅包含空值
- 在循环时修改数组是否安全
- 列表/数组是否有效 JSON