2010-01-03 68 views
225

Trong PHP, tôi muốn làm một cái gì đó như:Thêm giá trị mới cho một mảng hiện trong JavaScript

$array = array(); 
$array[] = "value1"; 
$array[] = "value2"; 
$array[] = "value3"; 

Làm thế nào tôi sẽ làm điều tương tự trong JavaScript?

+59

jQuery không phải là ngôn ngữ; JavaScript là. – mpen

+79

http://i.stack.imgur.com/ssRUr.gif – Broxzier

+4

@ChrisB - đối với những người tự hỏi, Javascript là ngôn ngữ được sử dụng để thực hiện JQuery vinh quang. – Davor

Trả lời

350

Bạn không cần jQuery cho điều đó. Sử dụng javascript thường xuyên

var arr = new Array(); 
// or var arr = []; 
arr.push('value1'); 
arr.push('value2'); 

Lưu ý: Trong javascript, bạn cũng có thể sử dụng Đối tượng làm mảng nhưng vẫn có quyền truy cập vào các mẫu nguyên mẫu. Điều này làm cho cư xử đối tượng như một mảng:

var obj = new Object(); 
Array.prototype.push.call(obj, 'value'); 

sẽ tạo ra một đối tượng mà trông giống như:

{ 
    0: 'value', 
    length: 1 
} 

Bạn có thể truy cập vào vaules giống như một mảng bình thường f.ex obj[0].

+5

đó chính là cách đối tượng "jQuery" trả về bởi '$()' hoạt động –

+1

Vâng, tôi chắc chắn có một plugin cho phép bạn làm điều đó với jQuery: P –

+75

Làm thế nào về '[]' thay vì 'mảng mới() 'và' {} 'thay vì' đối tượng mới() '... – James

11

Bạn có thể sử dụng phương thức .push() (JavaScript chuẩn)

ví dụ:

var primates = new Array(); 
primates.push('monkey'); 
primates.push('chimp'); 
100

Điều này không liên quan gì đến jQuery, chỉ cần JavaScript nói chung.

Để tạo một mảng trong JavaScript:

var a = []; 

Hoặc:

var a = ['value1', 'value2', 'value3']; 

Để nối các giá trị trên vào cuối mảng hiện có:

a.push('value4'); 

Để tạo một mảng mới, bạn thực sự nên sử dụng [] thay vì new Array() vì các lý do sau:

  • new Array(1, 2) tương đương với [1, 2], nhưng new Array(1)không tương đương với [1]. Thay vì sau này là gần hơn với [undefined], vì một đối số nguyên duy nhất cho hàm tạo Array cho biết độ dài mảng mong muốn.
  • Array, giống như bất kỳ lớp JavaScript tích hợp nào khác, không phải là từ khóa. Do đó, ai đó có thể dễ dàng xác định Array trong mã của bạn để làm điều gì đó khác ngoài việc xây dựng một mảng.
+37

+1 cho '[]' thay vì 'new Array()'. – BalusC

1
array = ["value1", "value2", "value3"] 

nó không phải là quá nhiều jquery như javascript

+1

đó không phải là * thêm * bất kỳ giá trị nào vào một mảng, đó là tạo một mảng với một số giá trị đã có trong nó. – nickf

+1

Tôi sẽ không downvote cho điều đó, nhưng cảm ơn ít nhất giải thích ý kiến ​​của bạn –

0

jQuery là một sự trừu tượng của JavaScript. Hãy nghĩ về jQuery như một tập hợp con của JavaScript, nhằm làm việc với DOM. Điều đó đang được nói; có các chức năng để thêm (các) mục vào bộ sưu tập. Tôi sẽ sử dụng JavaScript cơ bản trong trường hợp của bạn:

var array; 

array[0] = "value1"; 
array[1] = "value2"; 
array[2] = "value3"; 

...Hoặc:

var array = ["value1", "value2", "value3"]; 

... Hoặc:

var array = []; 

array.push("value1"); 
array.push("value2"); 
array.push("value3"); 
+5

Tôi muốn gọi nó là một "khuôn khổ" ... và nó không phải là một tập hợp con hoặc. – mpen

+0

Bạn nên khởi tạo biến 'mảng' thành đối tượng' Array' trong ví dụ đầu tiên của bạn, nếu không nó sẽ là 'undefined' và bạn không thể gọi' push' trên nó. –

+0

@Ionut G. Stan: Tôi đang khởi tạo mảng bằng cách thực hiện 'var array = []; ' – roosteronacid

30

Mảng là một đối tượng JavaScript bản địa, tại sao bạn không chỉ cố gắng sử dụng API của nó? Việc tự biết API sẽ giúp bạn tiết kiệm thời gian khi bạn chuyển sang JavaScript thuần túy hoặc một khung công tác khác.

Có nhiều khả năng khác nhau, vì vậy, hãy sử dụng một số khả năng chủ yếu nhắm vào nhu cầu của bạn.

Tạo mảng với giá trị:

var array = ["value1", "value2", "value3"]; 

Thêm giá trị đến hết

var array = []; 
array.push("value1"); 
array.push("value2"); 
array.push("value3"); 

Thêm giá trị vào bắt đầu:

var array = []; 
array.unshift("value1"); 
array.unshift("value2"); 
array.unshift("value3"); 

giá trị Thêm một số chỉ số:

var array = []; 
array[index] = "value1"; 

hoặc bằng cách sử dụng mối nối

array.splice(index, 0, "value1", "value2", "value3"); 

Chọn một mà bạn cần.

+0

Người có chỉ mục không hoạt động đối với tôi. Tôi đang sử dụng nó bên trong một hàm map $ ('select [id^= "filter _"]'). Map (function() { var name = $ (this) .prop ('name'); filters [name] = $ (this) .val(); –

10

Có một số cách:

Instantiating mảng:

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 

Đẩy tới mảng:

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] 

Sử dụng .push() là cách tốt hơn để thêm vào một mảng, vì bạn không cần biết có bao nhiêu mục đã có, d bạn có thể thêm nhiều mục trong một cuộc gọi hàm.

1

Thật vậy, bạn phải khởi tạo mảng của mình rồi sau đó sử dụng dòng lệnh array.push().

var array = new Array(); 
array.push("first value"); 
array.push("second value"); 
Các vấn đề liên quan