我有以下代码:
$.each( orderedqty, function( priority, quantity ) {
// for each priority
if ( $(".switch[data-priorityid=" + priority + "]").attr("data-state") == "on" ) {
// this priority is checked
orderedqtyArray[ priority ] = 15;
} else {
orderedqtyArray[ priority ] = 10;
}
});
console.info( orderedqtyArray );
console.info( JSON.stringify( orderedqtyArray ) );
问题是此代码返回:
[77:15,78:15]
[NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL ,NULL,NULL,15,15][78:15]
[NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL ,NULL,NULL,NULL,15]
而不是一个美丽的json :(
答案 0 :(得分:6)
浏览器的console.log输出已经过优化,可以删除空值,但它是同一个数组。 JSON不能这样做,它总是包含数组中的所有空值。
如果您希望字符串化输出看起来更像console.log' s,那么您需要将其定义为对象而不是数组。
var a = [], b = {};
a[5] = 1;
b[5] = 1;
console.log(JSON.stringify(a));
console.log(JSON.stringify(b));
输出
[null, null, null, null, null, 1]
{"5": 1}
答案 1 :(得分:3)
如果你定义这样的东西:
var array = [];
//defining item at arbitrary position
array[5] = 5;
// output from array will look something like this
[undefined, undefined, undefined, undefined, 5]
所以也许你的orderedqtyArray [priority]设置一些随机索引的值,这会导致问题。 因为如果你有正常的数组,它肯定会串行化为有效的json。
答案 2 :(得分:2)
如果您只想删除空值,可以执行以下操作:
JSON.stringify( orderedqtyArray.filter(function(e){return e}));