我正在循环到一个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个对象...一些关于拼接的东西?
答案 0 :(得分:3)
来自splice的数组将重新索引,因此对于最后一项,我将为1,数组长度也将为1,它也不会进入循环,因此您不会在其中获得期望的结果环。您可以使用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);