默认数组值

时间:2010-01-11 20:41:54

标签: javascript arrays

有没有办法在javascript中为数组分配默认值?

ex:an array with 24 slots that defaults to 0

17 个答案:

答案 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)

使用Lodashhttps://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));