繁体   English   中英

将javascript数组中的所有值初始化为0,无需迭代

[英]initialize all the values in a javascript array to 0 without iteration

有没有办法使javascript数组将所有值初始化为0,而无需迭代,如下所示

var array = [1, 2, 3, 4, 5];

[0, 0, 0, 0, 0]

您可以在兼容的浏览器中使用Array.prototype.fill()

 var array = [1, 2, 3, 4, 5];
 array.fill(0); // [0, 0, 0, 0, 0]

参考文献:

Array.apply(null, new Array(5)).map(Number.prototype.valueOf, 0))

有用的文章初始化数组

有点棘手。 但是有效

var array = [1, 2, 3, 4, 5];
array  = JSON.parse(JSON.stringify(array).replace(/(\d+)/g,0)); // Returns [0,0,0,0,0]

我想如果您使用JSON.parse()来构建空容器,而使用splice()来对现有数组进行变异,而不是仅仅使一个新的数组充满零,那么您就不需要评估了:

var r=[1, 2, 3, 4, 5];

[].splice.apply(r, 
   [0, r.length].concat( 
     JSON.parse("[0"+new Array(r.length).join(",0")+"]")  
));
alert(r); // shows: "0,0,0,0,0"

基于map()/ fill()的答案将不会影响期望的orig数组,但是这些解决方案可以像上面的答案一样使用拼接来这样做,唯一的区别是一个人如何构建零填充数组。

编辑:对Gilsha表示敬意,当您提醒我JSON就足够了时,我正在研究基于评估的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM