javascript – 从数组中删除对象 – 两种不同的方法,在查询每个数组的长度时有两种不同的结果

前端之家收集整理的这篇文章主要介绍了javascript – 从数组中删除对象 – 两种不同的方法,在查询每个数组的长度时有两种不同的结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个相同的数组:itemsOutput& itemsOutput2

我想使用attributes.type =“DIMENSION”删除数组中的这些对象.我发现了两种不同的方法

方法1

jQuery.each(itemsOutput,function(i,val) {
    if(val.attributes.type == "DIMENSION") // delete index
      {
        delete itemsOutput[i];
      }
});
console.log(itemsOutput.length);

方法2

metrics = itemsOutput2.filter(function (el) {
            return el.attributes.type === "METRIC";
          });
console.log(metrics.length);

虽然这两个新的数组似乎拥有相同数量的对象(并且在两者中,所有具有attributes.type =“DIMENSION”的对象都不见了),但控制台显示两个完全不同的值,每个数组的长度.

方法1删除对象,但长度与原始数组相同(尽管在控制台中查看数组,我观察到对象保留原始索引)

方法2不仅可以删除对象,还可以连续重新分配索引.对我来说,代码看起来更加清晰,所以我会留下这个方法.

但是,我的问题是,为什么会发生这种情况,如果我在循环中使用方法1的结果可能会出现问题.

解决方法

删除数组元素 the array length is not affected.即使删除数组的最后一个元素,也可以这样做.当删除操作符删除数组元素时,该元素不再位于数组中,但长度保持不变.

如果要将其从阵列中删除,则需要使用方法splice.例如:

itemsOutput.splice(i,1);

猜你在找的JavaScript相关文章