gpt4 book ai didi

javascript - js 减少只有空值的数组

转载 作者:行者123 更新时间:2023-11-28 00:53:07 25 4
gpt4 key购买 nike

为什么这不迭代?

(Array(5)).reduce(function(cur,prv,n,a){alert(n)},'');

我从未到达函数体,似乎忽略了所有空值,这不是我想要的。

最佳答案

据我了解,Array(5) 返回一个 Array Object 的实例,其属性为 length(值 5),但没有值(value)观。这里能够使用reduce(或其他数组方法,如map)的一种方法是:

String(Array(5)).split(',').reduce(function (cur, prv, n, a) { /* ... */ })

替代方案可能是:

Array.apply(null,{length: 5}).map( [callback] );
// or
Array.apply(null,Array(5)).map( [callback] );

但是将会在某个时刻遇到最大调用堆栈错误。对于大型数组,字符串/分割方法仍然有效(尽管速度有点慢)。在我的(不太快的)计算机上使用 node.js 映射 Array(1000000) 和 string/split-method 持续 0.47 秒,相同的 array.apply 方法崩溃并出现 RangeError (超出最大调用堆栈大小)。

您还可以编写一个“静态”数组方法来创建一个具有 n 个值的 Array 以及所有可用/适用的 Array 方法:

Array.create = function (n, mapCB, method, initial) {
method = method in [] ? method : 'map';
var nwArr = ( function(nn){ while (nn--) this.push(undefined); return this; } )
.call([], n);
return mapCB ? nwArr[method](mapCB, initial) : nwArr;
};
// usages
Array.create(5, [callback], 'reduce', '');
Array.create(5).reduce( [callback], '');
Array.create(5).map( [callback] ).reduce( [callback] );
// etc.

关于javascript - js 减少只有空值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26535003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com