我只是学习JavaScript,似乎有很多方法来声明数组。
var myArray = new Array()
var myArray = new Array(3)
var myArray = ["apples", "bananas", "oranges"]
var myArray = [3]
它们有什么区别,有哪些首选方式?
根据this website,以下两行非常不同:
var badArray = new Array(10); // creates an empty Array that's sized for 10 elements
var goodArray= [10]; // creates an Array with 10 as the first element
正如你所看到的,这两行做了两件完全不同的事情。如果你 我想添加多个项目然后badArray会 正确初始化,因为Javascript会足够聪明 知道你正在初始化数组而不是说多少 你想要添加的元素。
作者试图说的是Array(10)
创建一个精确包含10个元素的数组,[10]
创建一个未定义大小的数组,第0个元素为10?或者这是什么意思?
答案 0 :(得分:12)
在第一个示例中,您正在创建一个空白数组,与执行var x = []
相同。第二个示例生成一个大小为3的数组(包含所有元素undefined
)。第3和第4个例子是相同的,它们都使用这些元素制作数组。
使用new Array()
时要小心。
var x = new Array(10); // array of size 10, all elements undefined
var y = new Array(10, 5); // array of size 2: [10, 5]
首选方法是使用[]
语法。
var x = []; // array of size 0
var y = [10] // array of size 1: [1]
var z = []; // array of size 0
z[2] = 12; // z is now size 3: [undefined, undefined, 12]
答案 1 :(得分:10)
首选方法是始终使用带方括号的文字语法;与Array
不同,它的行为可以预测任意数量的项目。更重要的是,Array
不是关键字,虽然它不是一个现实的情况,但有人可以轻易地覆盖它:
function Array() { return []; }
alert(Array(1, 2, 3)); // An empty alert box
然而,更大的问题是一致性问题。有人重构代码可能会遇到这个函数:
function fetchValue(n) {
var arr = new Array(1, 2, 3);
return arr[n];
}
事实证明,只需要fetchValue(0)
,所以程序员会丢弃其他元素并破坏代码,因为它现在返回undefined
:
var arr = new Array(1);
答案 2 :(得分:6)
有很多方法可以创建数组。
声明和初始化数组的传统方式如下所示:
var a = new Array(5); // declare an array "a", of size 5
a = [0, 0, 0, 0, 0]; // initialize each of the array's elements to 0
或者...
// declare and initialize an array in a single statement
var a = new Array(0, 0, 0, 0, 0);
答案 3 :(得分:2)
宣布:
var myArr = ["apples", "oranges", "bananas"];
使用它:
document.write("In my shopping basket I have " + myArr[0] + ", " + myArr[1] + ", and " + myArr[2]);
答案 4 :(得分:0)
如果要创建一个主要特征是长度的数组,而不是每个索引的值,则将数组定义为var a=Array(length);
是合适的。
例如 -
String.prototype.repeat= function(n){
n= n || 1;
return Array(n+1).join(this);
}