无需迭代即可将javascript数组中的所有值初始化为0
有没有办法让javascript数组在不迭代的情况下将所有值初始化为0,如下所示无需迭代即可将javascript数组中的所有值初始化为0,javascript,arrays,Javascript,Arrays,有没有办法让javascript数组在不迭代的情况下将所有值初始化为0,如下所示 var array = [1, 2, 3, 4, 5]; 到 有用的文章 有用文章您可以在兼容浏览器中使用Array.prototype.fill: 参考资料: . 您可以在兼容浏览器中使用Array.prototype.fill: 参考资料: . 这有点棘手。但它是有效的 var array = [1, 2, 3, 4, 5]; array = JSON.parse(JSON.stringify(array)
var array = [1, 2, 3, 4, 5];
到
有用的文章
有用文章您可以在兼容浏览器中使用Array.prototype.fill: 参考资料: .
您可以在兼容浏览器中使用Array.prototype.fill: 参考资料: .
这有点棘手。但它是有效的
var array = [1, 2, 3, 4, 5];
array = JSON.parse(JSON.stringify(array).replace(/(\d+)/g,0)); // Returns [0,0,0,0,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来构建空数组和拼接来变异现有数组,而不是仅仅使新数组充满零,那么我猜您不需要eval:
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"
基于映射/填充的答案不会影响所需的orig阵列,但这些解决方案可以像上面的答案一样使用拼接来实现这一点,唯一的区别是如何构建零填充阵列
编辑:感谢Gilsha,当你提醒我JSON就足够了的时候,我正在做一个基于eval的答案。如果你使用JSON.parse来构建空数组和拼接来改变现有数组,而不是仅仅创建一个充满零的新数组,我想你不需要eval:
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"
基于映射/填充的答案不会影响所需的orig阵列,但这些解决方案可以像上面的答案一样使用拼接来实现这一点,唯一的区别是如何构建零填充阵列
编辑:Gilsha太好了,当你提醒我JSON就足够了时,我正在做一个基于eval的答案。Ah,那么你在寻找一个神奇的函数,它甚至不需要在内部循环中迭代?我…不认为这是存在的。未捕获类型错误:未定义不是一个函数@Alex:这就是为什么我澄清它是在兼容浏览器中的,尽管我当时只有机会在Chrome中进行测试,然后工作花了我一点时间。谢谢你的回答,因为我不能使用它,因为浏览器兼容度很高,所以你在寻找一个神奇的函数,它甚至不需要在内部遍历循环?我…不认为这是存在的。getting Uncaught TypeError:undefined不是一个函数@Alex:这就是为什么我澄清它是在兼容浏览器中的,尽管我当时只有机会在Chrome中进行测试,然后工作花了我一段时间。谢谢你的回答,因为我不能使用它是因为浏览器兼容性问题答案是anks…实际上我们遵循的是干净的代码策略…所以我不能使用这个东西答案是hanks…实际上我们遵循的是干净的代码策略…所以我不能使用这个东西如果这个答案解决了你的问题,你应该批准它,也许编辑问题可以更好地设置答案。如果此答案解决了您的问题,您应该批准它,也许编辑问题可以更好地设置答案。
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"