Code
var cool = new Array(3); cool[setAll] = 42; //cool[setAll] is just a pseudo selector.. alert(cool);
Result
A alert message:
42,42,42
How do I change/set all values of an array to a specific value?
There's no built-in way, you'll have to loop over all of them:
function setAll(a, v) { var i, n = a.length; for (i = 0; i < n; ++i) { a[i] = v; } }
http://jsfiddle.net/alnitak/xG88A/
If you really want, do this:
Array.prototype.setAll = function(v) { var i, n = this.length; for (i = 0; i < n; ++i) { this[i] = v; } };
and then you could actually do cool.setAll(42)
(see http://jsfiddle.net/alnitak/ee3hb/).
Some people frown upon extending the prototype of built-in types, though.
EDIT ES5 introduced a way to safely extend both Object.prototype
and Array.prototype
without breaking for ... in ...
enumeration:
Object.defineProperty(Array.prototype, 'setAll', { value: function(v) { ... } });
EDIT 2 In ES6 draft there's also now Array.prototype.fill
, usage cool.fill(42)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With