如果为空,则从数组中删除Javascript
我有一个如下所示的数组:如果为空,则从数组中删除Javascript,javascript,loops,Javascript,Loops,我有一个如下所示的数组: var testArray = [ {"cid": "1234567"}, {"cid": "892345"}, {"cid": ""}, {"cid": "8267783"}, {}, {"cid": "096873"}, ]; 在for循环之前或循环时,如何删除其中cid=”“和where为空{} 我试过这个: for(var i = 0; testArray.length; i++){ if(testAr
var testArray = [
{"cid": "1234567"},
{"cid": "892345"},
{"cid": ""},
{"cid": "8267783"},
{},
{"cid": "096873"},
];
在for循环之前或循环时,如何删除其中cid=”“和where为空{}
我试过这个:
for(var i = 0; testArray.length; i++){
if(testArray.cid && testArray.cid != ""){
}
}
这不起作用:-/出现此错误:无法从未定义中读取属性“cid”
希望这有意义,并提前感谢:-)用于过滤不需要的数据
var testArray=[
{“cid”:“1234567”},
{“cid”:“892345”},
{“cid”:“},
{“cid”:“8267783”},
{},
{“cid”:“096873”},
];
console.log(testArray.filter(arr=>arr.cid))
当您将在循环期间使用splice()
时。您需要将i
减少1
使用filter()
执行此操作的更好方法。下面我展示了这两种方法。对于检查空对象
{}
,您应该将对象.key(obj).length
与0
var testArray=[
{“cid”:“1234567”},
{“cid”:“892345”},
{“cid”:“},
{“cid”:“8267783”},
{},
{“cid”:“096873”},
];
//不变异原始数组。
让result=testArray.filter(x=>Object.keys(x.length!==0&&x.cid!='');
//在此循环之后,将更改原始数组
对于(设i=0;i
var testArray=[
{“cid”:“1234567”},
{“cid”:“892345”},
{“cid”:“},
{“cid”:“8267783”},
{},
{“cid”:“096873”},
];
testArray=testArray.filter(item=>Object.keys(item.length&&item[“cid”]);
console.log(testArray)
如果需要删除所有空值(“”、null、未定义和0):
要删除空值和换行符,请执行以下操作:
arr = arr.filter(function(e){ return e.replace(/(\r\n|\n|\r)/gm,"")});
范例
arr = ["hello","",null,undefined,1,100," "]
arr.filter(function(e){return e});
返回
["hello", 1, 100, " "]
刚刚添加了一个完整的后过滤功能。投票给HolyDragon tho
var testArray=[
{“cid”:“1234567”},
{“cid”:“892345”},
{“cid”:“},
{“cid”:“8267783”},
{},
{“cid”:“096873”},
];
testArray.filter(i=>i.cid)
.forEach(elem=>{
//做我的代码后过滤器
控制台日志(元素cid);
});
你用cid
编码将删除对象,将true
,0
,未定义
,null
。OP只要求”
超级,但以防万一……有没有一种方法我可以不用过滤器就完成这项任务?@Mansa看到我的答案了,我还用过滤器()
使用简单循环您只是缺少项的索引(testArray[i].cid)
["hello", 1, 100, " "]