我循环到一个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);

09-25 19:28