在JavaScript中为现有数组添加新值

And*_*rew 258 javascript arrays

在PHP中,我会做类似的事情:

$array = array();
$array[] = "value1";
$array[] = "value2";
$array[] = "value3";
Run Code Online (Sandbox Code Playgroud)

我如何在JavaScript中做同样的事情?

Dav*_*ing 385

你不需要jQuery.使用常规的JavaScript

var arr = new Array();
// or var arr = [];
arr.push('value1');
arr.push('value2');
Run Code Online (Sandbox Code Playgroud)

注意:在javascript中,您也可以使用Objects as Arrays,但仍然可以访问Array原型.这使对象的行为类似于数组:

var obj = new Object();
Array.prototype.push.call(obj, 'value');
Run Code Online (Sandbox Code Playgroud)

将创建一个看起来像这样的对象:

{
    0: 'value',
    length: 1
}
Run Code Online (Sandbox Code Playgroud)

您可以像普通数组f.ex一样访问vaules obj[0].

  • 怎么样`[]`而不是`new Array()`和`{}`而不是`new Object()`... (77认同)
  • @JP:当然,为什么不呢.我只想在示例中尽可能清楚. (7认同)
  • 这正是`$()`返回的"jQuery"对象的工作原理 (5认同)
  • @Justin:实际上,它稍微快一点:http://mir.aculo.us/2009/12/24/extreme-javascript-performance-video(向前滑动21) (3认同)

Mik*_*ike 107

这与jQuery无关,只是JavaScript.

要在JavaScript中创建数组:

var a = [];
Run Code Online (Sandbox Code Playgroud)

要么:

var a = ['value1', 'value2', 'value3'];
Run Code Online (Sandbox Code Playgroud)

要在现有数组的末尾附加值:

a.push('value4');
Run Code Online (Sandbox Code Playgroud)

要创建一个新数组,您应该使用[]而不是new Array()出于以下原因:

  • new Array(1, 2)相当于[1, 2],但是new Array(1)不是等同于[1].而后者更接近[undefined],因为Array构造函数的单个整数参数表示所需的数组长度.
  • Array就像任何其他内置JavaScript类一样,它不是关键字.因此,有人可以Array在代码中轻松定义除构造数组之外的其他操作.

  • 对于`[]`而不是`new Array()`为+1. (43认同)

nem*_*isj 34

Array是一个JavaScript本机对象,为什么不尝试使用它的API呢?当您切换到纯JavaScript或其他框架时,自己了解API将节省您的时间.

有许多不同的可能性,因此,使用主要针对您的需求.

使用值创建数组:

var array = ["value1", "value2", "value3"];
Run Code Online (Sandbox Code Playgroud)

将值添加到最后

var array = [];
array.push("value1");
array.push("value2");
array.push("value3");
Run Code Online (Sandbox Code Playgroud)

将值添加到begin:

var array = [];
array.unshift("value1");
array.unshift("value2");
array.unshift("value3");
Run Code Online (Sandbox Code Playgroud)

在某个索引处添加值:

var array = [];
array[index] = "value1";
Run Code Online (Sandbox Code Playgroud)

或者使用拼接

array.splice(index, 0, "value1", "value2", "value3");
Run Code Online (Sandbox Code Playgroud)

选择一个你需要的.


mop*_*oke 12

你可以使用这个.push()方法(这是标准的JavaScript)

例如

var primates = new Array();
primates.push('monkey');
primates.push('chimp');
Run Code Online (Sandbox Code Playgroud)


nic*_*ckf 12

有几种方法:

实例化数组:

var arr;

arr = new Array(); // empty array

// ---

arr = [];          // empty array

// ---

arr = new Array(3);
alert(arr.length);  // 3
alert(arr[0]); // undefined

// ---

arr = [3];
alert(arr.length);  // 1
alert(arr[0]); // 3
Run Code Online (Sandbox Code Playgroud)

推送到阵列:

arr = [3];     // arr == [3]
arr[1] = 4;    // arr == [3, 4]
arr[2] = 5;    // arr == [3, 4, 5]
arr[4] = 7;    // arr == [3, 4, 5, undefined, 7]

// ---

arr = [3];
arr.push(4);        // arr == [3, 4]
arr.push(5);        // arr == [3, 4, 5]
arr.push(6, 7, 8);  // arr == [3, 4, 5, 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)

使用.push()是添加到数组的更好方法,因为您不需要知道已经有多少项,并且您可以在一个函数调用中添加许多项.