在JavaScript中声明数组的方法是什么?

oxosxuxt  于 2022-12-02  发布在  Java
关注(0)|答案(6)|浏览(128)

我刚刚学习JavaScript,似乎有很多方法来声明数组。

  1. var myArray = new Array()
  2. var myArray = new Array(3)
  3. var myArray = ["apples", "bananas", "oranges"]
  4. 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的未定义大小的数组吗?或者这意味着什么?

vecaoik1

vecaoik11#

在第一个例子中,你创建了一个空数组,和var x = []一样。第二个例子创建了一个大小为3的数组(所有元素都是undefined)。第三个和第四个例子是一样的,它们都创建了一个包含这些元素的数组。
使用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]
qncylg1j

qncylg1j2#

首选方法是始终使用带方括号的文字语法;与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);
yrwegjxp

yrwegjxp3#

申报:

var myArr = ["apples", "oranges", "bananas"];

使用方法:

document.write("In my shopping basket I have " + myArr[0] + ", " + myArr[1] + ", and " + myArr[2]);
eivgtgni

eivgtgni4#

创建阵列的方法有多种。
声明和初始化数组的传统方式如下所示:

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);
mspsb9vt

mspsb9vt5#

如果要创建一个主要特征是长度而不是每个索引的值的数组,则将数组定义为var a=Array(length);是合适的。
例如

String.prototype.repeat= function(n){
    n= n || 1;
    return Array(n+1).join(this);
}
9vw9lbht

9vw9lbht6#

你可以这样申报
常数[爱丽丝,鲍勃] = [1,2]
控制台日志(alice)// 1
控制台.log(bob)// 2

相关问题