Gay*_*han 0 javascript underscore.js
嗨如何检查数组长度内的数组为空,然后从主数组中删除父数组,
想想我有一个阵列
[
{
"id": 71,
"campaignAssets": [
{
"id": 128
}
]
},
{
"id": 99,
"campaignAssets": []
}
]
Run Code Online (Sandbox Code Playgroud)
从上面的数组ID:71有campaignAssets数组,其长度为1但在另一个"id":99没有campaignAssets所以我必须删除父数组,这意味着
{
"id": 99,
"campaignAssets": []
}
Run Code Online (Sandbox Code Playgroud)
所以最终阵列应该是
[
{
"id": 71,
"campaignAssets": [
{
"id": 128
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
该提案有两个解决方案,
1.使用新阵列
你可以过滤它 Array#filter
var data = [{ "id": 71, "campaignAssets": [{ "id": 128 }] }, { "id": 99, "campaignAssets": [] }];
data = data.filter(function (a) { return a.campaignAssets.length; });
console.log(data);Run Code Online (Sandbox Code Playgroud)
在ES6中,它甚至更短
var data = [{ "id": 71, "campaignAssets": [{ "id": 128 }] }, { "id": 99, "campaignAssets": [] }];
data = data.filter(a => a.campaignAssets.length);
console.log(data);Run Code Online (Sandbox Code Playgroud)
2.没有新阵列
对于原位解决方案,保持数组并仅删除长度为零的元素,我建议使用反向迭代并检查长度并相应地使用Array#splice.
var data = [{ "id": 71, "campaignAssets": [{ "id": 128 }] }, { "id": 99, "campaignAssets": [] }],
i = data.length;
while (i--) {
if (!data[i].campaignAssets.length) {
data.splice(i, 1);
}
}
console.log(data);Run Code Online (Sandbox Code Playgroud)