Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果为空,则从数组中删除Javascript_Javascript_Loops - Fatal编程技术网

如果为空,则从数组中删除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, " "]