Javascript \|设置数组的所有值

新手上路,请多包涵

代码

var cool = new Array(3);
cool[setAll] = 42; //cool[setAll] is just a pseudo selector..
alert(cool);

结果

一条警告信息:

 42,42,42

如何将数组的所有值更改/设置为特定值?

原文由 Tomkay 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 300
2 个回答

没有内置方法,您必须遍历所有方法:

 function setAll(a, v) {
    var i, n = a.length;
    for (i = 0; i < n; ++i) {
        a[i] = v;
    }
}

http://jsfiddle.net/alnitak/xG88A/

如果您 真的 想要,请执行以下操作:

 Array.prototype.setAll = function(v) {
    var i, n = this.length;
    for (i = 0; i < n; ++i) {
        this[i] = v;
    }
};

然后你实际上可以做 cool.setAll(42) (见 http://jsfiddle.net/alnitak/ee3hb/ )。

不过,有些人不赞成扩展内置类型的原型。

EDIT ES5引入了一种安全扩展 Object.prototypeArray.prototype 而不破坏 for ... in ... 枚举的方法:

 Object.defineProperty(Array.prototype, 'setAll', {
    value: function(v) {
        ...
    }
});

编辑 2 在 ES6 草案中现在也有 Array.prototype.fill 用法 cool.fill(42)

原文由 Alnitak 发布,翻译遵循 CC BY-SA 3.0 许可协议

ES6 方法非常干净。所以首先你初始化一个 x 长度的数组,然后在它上面调用 fill 方法。

 let arr = new Array(3).fill(9)

这将创建一个包含 3 个元素的数组,例如:

 [9, 9, 9]

原文由 Faris Zacina 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题