为什么javascript`arr.filter(()=>;true)`会删除空洞?

为什么javascript`arr.filter(()=>;true)`会删除空洞?,javascript,arrays,Javascript,Arrays,请看下面的代码,数组过滤器显式返回true可以移除数组漏洞,为什么会发生这种情况 const数组=[0,null',,未定义,,]; console.log(数组); //=>[0,空,”,未定义,空×2] array.filter(()=>true); //=>[0,空,”,未定义] 因为与其他数组方法一样,.filter只迭代直接位于数组对象上的属性。见: 5. Let A be ? ArraySpeciesCreate(O, 0). 6. Let k be 0. 7. Let to be

请看下面的代码,数组过滤器显式返回
true
可以移除数组漏洞,为什么会发生这种情况

const数组=[0,null',,未定义,,];
console.log(数组);
//=>[0,空,”,未定义,空×2]
array.filter(()=>true);
//=>[0,空,”,未定义]

因为与其他数组方法一样,
.filter
只迭代直接位于数组对象上的属性。见:

5. Let A be ? ArraySpeciesCreate(O, 0).
6. Let k be 0.
7. Let to be 0.
8. Repeat, while k < len
  a. Let Pk be ! ToString(k).
  b. Let kPresent be ? HasProperty(O, Pk). // <-----------------------------------
  c. If kPresent is true, then
    i. Let kValue be ? Get(O, Pk).
    ii. Let selected be ! ToBoolean(? Call(callbackfn, T, « kValue, k, O »)).
    iii. If selected is true, then
      1. Perform ? CreateDataPropertyOrThrow(A, ! ToString(to), kValue).
      2. Set to to to + 1.
  d. Set k to k + 1.
9. Return A.