Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 默认数组值_Javascript_Arrays - Fatal编程技术网

Javascript 默认数组值

Javascript 默认数组值,javascript,arrays,Javascript,Arrays,有没有一种方法可以为javascript中的数组指定默认值 例如:具有24个插槽的阵列,默认为0否 你必须使用循环 var a = new Array(24); for (var i = a.length-1; i >= 0; -- i) a[i] = 0; 有点罗嗦,但它是有效的 var aray = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

有没有一种方法可以为javascript中的数组指定默认值

例如:
具有24个插槽的阵列,默认为0

你必须使用循环

var a = new Array(24);
for (var i = a.length-1; i >= 0; -- i) a[i] = 0;

有点罗嗦,但它是有效的

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 ];
var A=[]重复(0,24)

警报(A)

我个人使用:

function replicate (n, x) {
  var xs = [];
  for (var i = 0; i < n; ++i) {
    xs.push (x);
  }
  return xs;
}
现在,更聪明地说:)
@见

如果您使用“非常现代”的浏览器(请检查),您可以依靠
fill

var array = new Array(LENGTH);
array.fill(DEFAULT_VALUE);
由于几个原因,许多开发人员不喜欢使用
newarray()
;因此,您可以按以下步骤执行相同的操作:

var array = [];
for(var i=0; i<LENGTH; ++i) array.push(DEFAULT_VALUE);
var数组=[];
对于(var i=0;i使用
Lodash
(),这是一个用于数组操作的健壮库,也可用于浏览器

var _ = require('lodash');
var A = _.fill(Array(24), 0);

您可以在阵列上使用
fill
功能:

Array(24).fill(0)
注:
fill
仅在ECMAScript 2015(别名“6”)中引入,因此截至2017年,浏览器支持仍然非常有限(例如没有Internet Explorer)。

最简单的一个:

myArray = new Array(24).fill(0)

如果您使用的是ES6及以上版本,则可以使用

new Array(24).fill(0);
[the created array ].fill(a new value , start position, end position(not included) )
这也适用于:

Array.from({ length: 24}, () => 0)
下面我使用的语法基于ECMA脚本6/es6

设arr=[]

arr.length=5;//数组的大小

[…arr].map(布尔).map(数字);//三点运算符在ECMA脚本6中称为扩展运算符

------------另一种方式-------------

让变量名称=新数组(大小)。填充(初始值)

对于ex-let arr=new Array(5).fill(0)//在es6中也引入了fill方法

另一种方式符合ECMA 5或es5

var variable_name=Array.apply(null,数组(大小)).map(布尔值)。map(数字)

var arr=Array.apply(null,数组(5)).map(布尔值).map(数字)

所有这些都将为您提供相同的结果:
[0,0,0,0,0]实现同样目标的另一种方法-

Array.from(数组(24),()=>5)


Array.from
接受第二个参数作为其映射函数。

最佳且最简单的解决方案是:

Array(length of the array).fill(a default value you want to put in the array)
范例

Array(5).fill(1)
结果将是

[1,1,1,1,1]
你可以在里面放任何你喜欢的东西:

Array(5).fill({name : ""})
现在,如果要更改数组中的某些当前值 你可以用

new Array(24).fill(0);
[the created array ].fill(a new value , start position, end position(not included) )

输出是

[1, "a", "a", 1, 1]

奇怪的(Javascript方面的)命名约定是怎么回事?(@大写字母的使用。)假设我想这样做,但是有一个对象数组,我该怎么做呢?var A=[]。repeat(new myObject(),10)只是复制引用,而不是每次实例化一个新对象time@Morten
repeat=function(what,count,isFactory){…};[].repeat(函数(){return new myObject();},10,true)
这已经很晚了,但我只想给以后阅读这篇文章的人补充一点:不要叫它
repeat
,因为ES6将实现一个
repeat
方法,这意味着您将覆盖默认行为,这是不鼓励的。不过,好的解决方案。deadrunk下面的答案更好,它不会改变阵列原型,但不会改变同样的事情。从技术上讲,它仍然是一个循环,移动到一个函数中。@KnickerKicker-不,对于一个一次性的24元素数组,我可能会完全这样做。如果它是大量的项或者我反复需要它,那么我会更聪明。实际上,这并不能回答问题“有没有一种方法可以为javascript中的数组指定默认值?“这个答案解决的是一个澄清的例子。到目前为止,这是创建一个包含24个零的数组的最有效、最干净的方法。我不知道为什么会有这样的结果。他要求的是一个包含0的数组,而不是0的字符串版本。加上这段代码编写得很糟糕,为什么要在可以执行
var a=new array(6)的情况下使用正则表达式替换呢。join(0).split(“”)
函数get(i){return 0;}
我的解决方案的Big-O是O(1)另一种方式总是有O(n)这里有一个版本可以根据问题中的要求给出数字:
数组(24).join().split(“”).map(函数(){return 0})
如何在第一个数组上允许map?有关构造数组的方式的一些信息允许map工作,而通常情况下它会退出。
Array(5).fill(1)
[1,1,1,1,1]
Array(5).fill({name : ""})
[the created array ].fill(a new value , start position, end position(not included) )
[1,1,1,1,1].fill("a",1,3)
[1, "a", "a", 1, 1]