删除数组上的空值
Delete null values on an Array
我想用JSON发送一个对象,我用for循环迭代这个对象。我发送的 JSON 是正确的,但问题是数组中有空值。我认为它与 myValue.children[index]= item;
我尝试了 .filter() 方法,但它没有解决我的问题,因为返回的数组是空的。我也尝试了一个条件,但我只检测到 4 个值。
这是我收到的 JSON :
{
"name":"object",
"children":[
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
},
null,
null,
null,
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
},
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
},
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
}
]
}
这是我的代码:
function myFunction(index, tabItem , callback){
var result = '';
var myValue = {};
var childrenTicket = [];
myValue.name = "object";
myValue.children = childrenTicket;
for (index in tabItem) {
try{
var currentItem = tabItem[index];
var Object =currentItem.issuelinks.issuelinktype.outwardlinks.issuelink;
for(var SeveralObject in Object) {
var item = {};
var specificObject = Object[SeveralObject];
var main = specificObject._;
var id = specificObject.$.id;
var descriptionObject = {};
descriptionObject.name = id;
descriptionObject.size = 12345;
item.name = main;
if (myValue.children[index] == undefined){
console.log('undefined detected');
}
myValue.children[index]= item;
//result = result + (myValue);
item.children = [descriptionObject];
sendJson(myValue);
callback(result);
}
} catch(ignored){
}
} return result;
}
希望你能帮助我。
尝试这样的事情:
for (var i in obj) {
if (obj[i] === null || obj[i] === undefined) {
delete obj[i];
}
}
obj
是您的 JSON 对象。
您可以使用 underscore
模块并使用它的 compact
方法。
您可以像这样删除空值
for (var ite in ObjJson)
{
if(ObjJson[ite]==null)
{
console.log('ys null');
delete ObjJson[ite];
}
}
尝试使用 underscore.js
_.compact(array)
它将删除所有 null、false、undefined 等值。
使用 underscore.js 而不是自己编写循环或其他东西的优点是 underscore.js 函数比您的循环更快,出错的可能性也更少。
我想用JSON发送一个对象,我用for循环迭代这个对象。我发送的 JSON 是正确的,但问题是数组中有空值。我认为它与 myValue.children[index]= item;
我尝试了 .filter() 方法,但它没有解决我的问题,因为返回的数组是空的。我也尝试了一个条件,但我只检测到 4 个值。
这是我收到的 JSON :
{
"name":"object",
"children":[
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
},
null,
null,
null,
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
},
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
},
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
}
]
}
这是我的代码:
function myFunction(index, tabItem , callback){
var result = '';
var myValue = {};
var childrenTicket = [];
myValue.name = "object";
myValue.children = childrenTicket;
for (index in tabItem) {
try{
var currentItem = tabItem[index];
var Object =currentItem.issuelinks.issuelinktype.outwardlinks.issuelink;
for(var SeveralObject in Object) {
var item = {};
var specificObject = Object[SeveralObject];
var main = specificObject._;
var id = specificObject.$.id;
var descriptionObject = {};
descriptionObject.name = id;
descriptionObject.size = 12345;
item.name = main;
if (myValue.children[index] == undefined){
console.log('undefined detected');
}
myValue.children[index]= item;
//result = result + (myValue);
item.children = [descriptionObject];
sendJson(myValue);
callback(result);
}
} catch(ignored){
}
} return result;
}
希望你能帮助我。
尝试这样的事情:
for (var i in obj) {
if (obj[i] === null || obj[i] === undefined) {
delete obj[i];
}
}
obj
是您的 JSON 对象。
您可以使用 underscore
模块并使用它的 compact
方法。
您可以像这样删除空值
for (var ite in ObjJson)
{
if(ObjJson[ite]==null)
{
console.log('ys null');
delete ObjJson[ite];
}
}
尝试使用 underscore.js
_.compact(array)
它将删除所有 null、false、undefined 等值。
使用 underscore.js 而不是自己编写循环或其他东西的优点是 underscore.js 函数比您的循环更快,出错的可能性也更少。