我循环到一个json对象,其中有一个对象数组。
我想从阵列中删除在iban上具有空值并且在帐号上具有超过12位数字的对象。
如果同时满足这两个条件,则我要删除该项目。
我的清单上有3个项目应删除,因为它们满足此条件,但只有2个被删除。
我的功能是这样的
for (var i = 0; i < benefs.length; i++) {
var befNumberIban = benefs[i].Iban;
var befNumber = benefs[i].AccountNumber;
if (befNumber != null) {
if (isBefLenght && (befNumberIban == null || befNumberIban == "")) {
benefs.splice(i, 1);
我不明白为什么它只能删除2个符合条件的3个对象...有关拼接的内容?
最佳答案
从splice开始,数组将重新索引,因此对于最后一项,我将为1,数组长度将为1,它也不会进入循环,因此您不会在for循环内获得所需的结果。您可以使用filter轻松实现。
const benefs = [{
Iban: null,
AccountNumber: "",
}, {
Iban: null,
AccountNumber: "",
}, {
Iban: null,
AccountNumber: "",
}]
const isBefLenght = true;
var newArray = benefs.filter(a => {
return isBefLenght && !(a.Iban === null || a.befNumberIban === "");
})
console.log(newArray);