有没有办法在javascript中为数组分配默认值?
ex:an array with 24 slots that defaults to 0
答案 0 :(得分:50)
var a = Array.apply(null, Array(24)).map(function() { return 0 });
// or:
var a = Array.apply(null, Array(5)).map(Boolean).map(Number);
答案 1 :(得分:24)
您可以在阵列上使用fill
功能:
Array(24).fill(0)
注意: fill
仅在ECMAScript 2015(别名“6”)中引入,因此截至2017年,浏览器支持仍然非常有限(例如没有Internet Explorer)。
答案 2 :(得分:22)
有点罗嗦,但它有效。
var aray = [ 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0 ];
答案 3 :(得分:22)
Array.prototype.repeat= function(what, L){
while(L) this[--L]= what;
return this;
}
var A = [] .repeat(0,24);
警报(A)
答案 4 :(得分:11)
如果您使用非常现代的"浏览器(查看compatibility table),您可以依赖fill
:
var array = new Array(LENGTH);
array.fill(DEFAULT_VALUE);
由于多种原因,很多开发人员都不赞赏使用new Array()
;所以你可以这样做:
var array = [];
for(var i=0; i<LENGTH; ++i) array.push(DEFAULT_VALUE);
后者更兼容,正如您所看到的,两种解决方案都由两行代码表示。
答案 5 :(得分:3)
我个人使用:
function replicate (n, x) {
var xs = [];
for (var i = 0; i < n; ++i) {
xs.push (x);
}
return xs;
}
示例:
var hellos = replicate (100, "hello");
答案 6 :(得分:2)
没有
你必须使用循环。
var a = new Array(24);
for (var i = a.length-1; i >= 0; -- i) a[i] = 0;
答案 7 :(得分:2)
如果您使用的是ES6及更高版本,则可以使用
new Array(24).fill(0);
这也有效:
Array.from({ length: 24}, () => 0)
答案 8 :(得分:1)
现在,更聪明地:)
@see JavaScript Array reference
Example on JSFiddle
var len = 100;
var ch = '0';
alert ( new Array(len).join( ch ) );
答案 9 :(得分:0)
使用Lodash
(https://lodash.com/docs),这是一个强大的数据库操作库,也可供浏览器使用。
var _ = require('lodash');
var A = _.fill(Array(24), 0);
答案 10 :(得分:0)
[].fill.call({ length: 24 }, 0);
答案 11 :(得分:0)
最简单的一个:
myArray = new Array(24).fill(0)
答案 12 :(得分:0)
我在下面使用的语法基于ECMA Script 6 / es6
let arr = [];
arr.length = 5; //数组的大小;
[... arr] .map(布尔值)。map(数字); //在ECMA Script 6中引入了三个点运算符 spread operator
------------另一种方式-------------
让variable_name =新数组(大小).fill(初始值)
例如exrr arr = new Array(5).fill(0) // fill方法也已在es6中引入
ECMA 5或es5
的另一种方法
var variable_name = Array.apply(null,Array(size))。map(Boolean).map(Number)
var arr = Array.apply(null,Array(5))。map(Boolean).map(Number);
所有这些都将给您相同的结果: [0,0,0,0,0]
答案 13 :(得分:0)
另一种实现相同目的的方法-
Array.from(Array(24),()=>5)
Array.from
接受第二个参数作为其映射函数。
答案 14 :(得分:0)
最佳和最快的解决方案是:
Array(length of the array).fill(a default value you want put in the array)
示例
Array(5).fill(1)
结果将是
[1,1,1,1,1]
您可以在其中放入任何您喜欢的东西:
Array(5).fill({name : ""})
现在,如果要更改数组中的某些当前值 您可以使用
[the created array ].fill(a new value , start position, end position)
喜欢
[1,1,1,1,1].fill("a",1,3)
输出为
[1, "a", "a", 1, 1]
答案 15 :(得分:-2)
(new Array(5).toString().replace(/,/g, "0,") + "0").split(",")
// ["0", "0", "0", "0", "0"]
答案 16 :(得分:-5)
just do it:
//
var a = [];
//Function 'get': to get value of a[index], if a[index] undefined, return '0'
function get(i){
if (a[i] == null){
a[i] = 0;
}
return a[i];
}
//Use:
var index = 1230020;
console.log(get(index));