Câu trả lời:
Sử dụng Array.prototype.push
phương thức để nối các giá trị vào một mảng:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
Bạn có thể sử dụng push()
hàm để nối nhiều hơn một giá trị vào một mảng trong một cuộc gọi:
// initialize array
var arr = ["Hi", "Hello", "Bonjour", "Hola"];
// append multiple values to the array
arr.push("Salut", "Hey");
// display all values
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
Cập nhật
Nếu bạn muốn thêm các mục của một mảng vào một mảng khác, bạn có thể sử dụng firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Cập nhật
Chỉ cần thêm vào câu trả lời này nếu bạn muốn nối bất kỳ giá trị nào vào đầu một mảng có nghĩa là chỉ mục đầu tiên thì bạn có thể sử dụng Array.prototype.unshift
cho mục đích này.
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
Nó cũng hỗ trợ nối thêm nhiều giá trị cùng một lúc push
.
for
(sử dụng .forEach
).
length
tài sản. Trình thông dịch thực hiện một công việc tuyệt vời ở chính nó và nó sẽ không tạo ra bất kỳ sự khác biệt nào trong Thế giới thực cho dù bạn có tối ưu hóa nó đi hay không. Nếu mảng của bạn trở nên quá lớn đến nỗi việc tối ưu hóa .length
sẽ thực sự có ích, rất có thể một mảng không còn là cấu trúc dữ liệu phù hợp nữa. Việc sử dụng forEach
có những ưu điểm, nhưng rất đáng nghi ngờ rằng hiệu suất tăng sẽ là một trong số đó, vì chức năng gọi cho mỗi lần lặp sẽ phát sinh chi phí và không tiết kiệm được gì.
length
Thuộc tính của một mảng không được tính mỗi lần bạn gọi nó, đó là một biến được lưu trong array
đối tượng, chỉ được cập nhật khi bạn thay đổi mảng. Vì vậy, trên thực tế không có chi phí hiệu suất bao gồm arr.length
trong for
điều kiện.
forEach
hàm gọi lại nội tuyến (một số trong số chúng có thể đã làm điều đó) và sẽ không có sự khác biệt trong mã máy được tạo, nếu hàm được gọi thường đủ để được biên dịch thay vì được giải thích bởi thời gian chạy. Lời khuyên tương tự cũng xảy ra với bất kỳ ngôn ngữ nào không phải là trình biên dịch.
Nếu bạn chỉ nối thêm một biến duy nhất, thì nó push()
hoạt động tốt. Nếu bạn cần nối thêm một mảng khác, hãy sử dụng concat()
:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
Ví dụ không ảnh hưởng ar1
và ar2
trừ khi được chỉ định lại, ví dụ:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
Rất nhiều thông tin tuyệt vời ở đây .
How do I append to an array in JavaScript?
, nhưng concat
thực sự tạo ra một mảng mới . Đó là một sự khác biệt quan trọng! Thay vào đó, tôi muốn nói câu trả lời dưới đây của Omnimike thực sự là câu trả lời hay nhất: Sử dụng Push.apply để đẩy toàn bộ một mảng sang một mảng hiện có mà không tạo ra một mảng mới.
ar1 = ar1.concat(ar2);
sẽ nối vàoar1
ar1
, nối thêm ar2
và sau đó trả về mảng mới. Chỉ cần bỏ phần chuyển nhượng ( ar1 = ...
) khỏi dòng mã đó và bạn sẽ thấy rằng bản gốc ar1
không thực sự thay đổi. Nếu bạn muốn tránh tạo một bản sao, bạn sẽ cần push
. Đừng tin tôi, hãy tin vào các tài liệu : "Phương thức concat () trả về một mảng mới" Câu đầu tiên trong các tài liệu cho concat
.
ar2
. Kết quả .push
trong kịch bản sẽ là = [ar1, [ar2]]
. .concat giải quyết vấn đề đó, nhưng với sự hy sinh tốc độ và một mảng mới được tạo ra. Để sử dụng .push
đúng trong phần bổ sung mảng, hãy lặp phần tử có chứa trước và đẩy từng phần tử. ar2.forEach(each => { ar1.push(each); });
Một số điểm chuẩn nhanh (mỗi bài kiểm tra = 500k phần tử được nối thêm và kết quả là trung bình của nhiều lần chạy) cho thấy như sau:
Firefox 3.6 (Mac):
arr[arr.length] = b
nhanh hơn (300ms so với 800ms)arr.push(b)
nhanh hơn (500ms so với 900ms)Safari 5.0 (Mac):
arr[arr.length] = b
nhanh hơn (90ms so với 115ms)arr[arr.length] = b
nhanh hơn (160ms so với 185ms)Google Chrome 6.0 (Mac):
Tôi thích arr.push()
cú pháp tốt hơn, nhưng tôi nghĩ rằng tôi sẽ tốt hơn với arr[arr.length]
Phiên bản, ít nhất là ở tốc độ thô. Tôi rất muốn xem kết quả của một lần chạy IE.
Vòng lặp điểm chuẩn của tôi:
function arrpush_small() {
var arr1 = [];
for (a = 0; a < 100; a++)
{
arr1 = [];
for (i = 0; i < 5000; i++)
{
arr1.push('elem' + i);
}
}
}
function arrlen_small() {
var arr2 = [];
for (b = 0; b < 100; b++)
{
arr2 = [];
for (j = 0; j < 5000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}
}
function arrpush_large() {
var arr1 = [];
for (i = 0; i < 500000; i++)
{
arr1.push('elem' + i);
}
}
function arrlen_large() {
var arr2 = [];
for (j = 0; j < 500000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}
Tôi nghĩ rằng đáng để đề cập rằng đẩy có thể được gọi với nhiều đối số, sẽ được thêm vào mảng theo thứ tự. Ví dụ:
var arr = ['first'];
arr.push('second', 'third');
console.log(arr);
Do đó, bạn có thể sử dụng push.apply để nối một mảng vào một mảng khác như vậy:
var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);
Chú thích ES5 có thêm thông tin về chính xác những gì đẩy và áp dụng làm.
Cập nhật năm 2016: với mức độ lây lan , bạn không cần điều đó apply
nữa, như:
var arr = ['first'];
arr.push('second', 'third');
arr.push(...['fourth', 'fifth']);
console.log(arr) ;
Array.prototype.push.apply()
.
Bạn có thể sử dụng push
và apply
chức năng để nối hai mảng.
var array1 = [11, 32, 75];
var array2 = [99, 67, 34];
Array.prototype.push.apply(array1, array2);
console.log(array1);
Nó sẽ nối array2
vào array1
. Bây giờ array1
có chứa [11, 32, 75, 99, 67, 34]
. Mã này đơn giản hơn nhiều so với việc viết for
các vòng lặp để sao chép từng mục trong mảng.
...
toán tử thay vì áp dụng const a1 = [] const a2 = [5,6,7] const.push(...a2)
chỉnh sửa: tô sáng cú pháp
array1.concat(array2)
trong tình huống này. Cuộc gọi đến push
dường như không cần thiết.
Với toán tử trải rộng ES6 mới , việc nối hai mảng bằng cách sử dụng push
trở nên dễ dàng hơn:
var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr);
Điều này thêm nội dung arr2
vào cuốiarr
.
Nếu arr
là một mảng và val
là giá trị bạn muốn thêm sử dụng:
arr.push(val);
Ví dụ
var arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);
Sử dụng concat
:
a = [1, 2, 3];
b = [3, 4, 5];
a = a.concat(b);
console.log(a);
Javascript với ECMAScript 5 tiêu chuẩn được hỗ trợ bởi hầu hết các trình duyệt hiện nay, bạn có thể sử dụng apply()
để append array1
để array2
.
var array1 = [3, 4, 5];
var array2 = [1, 2];
Array.prototype.push.apply(array2, array1);
console.log(array2); // [1, 2, 3, 4, 5]
Javascript với tiêu chuẩn ECMAScript 6 được Chrome và FF và IE Edge hỗ trợ, bạn có thể sử dụng spread
toán tử:
"use strict";
let array1 = [3, 4, 5];
let array2 = [1, 2];
array2.push(...array1);
console.log(array2); // [1, 2, 3, 4, 5]
Các spread
nhà điều hành sẽ thay thế array2.push(...array1);
với array2.push(3, 4, 5);
khi trình duyệt được suy nghĩ logic.
Điểm thưởng
Nếu bạn muốn tạo một biến khác để lưu trữ tất cả các mục từ cả hai mảng, bạn có thể làm điều này:
ES5 var combinedArray = array1.concat(array2);
ES6 const combinedArray = [...array1, ...array2]
Toán tử lây lan ( ...
) là trải đều tất cả các mục từ một bộ sưu tập.
Nếu bạn muốn nối hai mảng -
var a = ['a', 'b'];
var b = ['c', 'd'];
sau đó bạn có thể sử dụng:
var c = a.concat(b);
Và nếu bạn muốn thêm bản ghi g
vào mảng ( var a=[]
) thì bạn có thể sử dụng:
a.push('g');
Các push()
phương pháp bổ sung thêm các mục mới vào cuối của một mảng, và trả về chiều dài mới. Thí dụ:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");
// The result of fruits will be:
Banana, Orange, Apple, Mango, Kiwi
Câu trả lời chính xác cho câu hỏi của bạn đã được trả lời, nhưng hãy xem xét một số cách khác để thêm các mục vào một mảng.
Các unshift()
phương pháp bổ sung thêm các mục mới vào đầu của một mảng, và trả về chiều dài mới. Thí dụ:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon", "Pineapple");
// The result of fruits will be:
Lemon, Pineapple, Banana, Orange, Apple, Mango
Và cuối cùng, concat()
phương thức được sử dụng để nối hai hoặc nhiều mảng. Thí dụ:
var fruits = ["Banana", "Orange"];
var moreFruits = ["Apple", "Mango", "Lemon"];
var allFruits = fruits.concat(moreFruits);
// The values of the children array will be:
Banana, Orange, Apple, Mango, Lemon
Có một số cách để nối một mảng trong JavaScript:
1) Các push()
phương pháp bổ sung thêm một hoặc nhiều phần tử vào cuối mảng và trả về chiều dài mới của mảng.
var a = [1, 2, 3];
a.push(4, 5);
console.log(a);
Đầu ra:
[1, 2, 3, 4, 5]
2) Các unshift()
phương pháp bổ sung thêm một hoặc nhiều phần tử vào đầu của một mảng và trả về chiều dài mới của mảng:
var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a);
Đầu ra:
[4, 5, 1, 2, 3]
3) Các concat()
phương pháp được sử dụng để kết hợp hai hay nhiều mảng. Phương pháp này không thay đổi các mảng hiện có mà thay vào đó trả về một mảng mới.
var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
console.log(arr3);
Đầu ra:
[ "a", "b", "c", "d", "e", "f" ]
4) Bạn có thể sử dụng thuộc tính của mảng .length
để thêm một phần tử vào cuối mảng:
var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.log( ar );
Đầu ra:
["one", "two", "three", "four"]
5) Các splice()
phương pháp làm thay đổi nội dung của một mảng bằng cách loại bỏ các yếu tố hiện hữu và / hoặc thêm các yếu tố mới:
var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(4, 0, "nemo");
//array.splice(start, deleteCount, item1, item2, ...)
console.log(myFish);
Đầu ra:
["angel", "clown", "mandarin", "surgeon","nemo"]
6) Bạn cũng có thể thêm một phần tử mới vào một mảng chỉ bằng cách chỉ định một chỉ mục mới và gán một giá trị:
var ar = ['one', 'two', 'three'];
ar[3] = 'four'; // add new element to ar
console.log(ar);
Đầu ra:
["one", "two","three","four"]
push
: nó sửa đổi mảng ban đầu bằng cách đẩy các phần tử mới lên trên nó. Tôi đang đọc sai, hay nên chỉnh sửa nó?
Bây giờ, bạn có thể tận dụng cú pháp ES6 và chỉ cần làm:
let array = [1, 2];
console.log([...array, 3]);
giữ mảng ban đầu bất biến.
Nếu bạn biết chỉ số cao nhất (chẳng hạn như được lưu trữ trong một biến "i") thì bạn có thể làm
myArray[i + 1] = someValue;
Tuy nhiên nếu bạn không biết thì bạn có thể sử dụng
myArray.push(someValue);
như các câu trả lời khác được đề xuất, hoặc bạn có thể sử dụng
myArray[myArray.length] = someValue;
Lưu ý rằng mảng là 0 dựa trên .length trả về chỉ số cao nhất cộng với một.
Cũng lưu ý rằng bạn không phải thêm theo thứ tự và bạn thực sự có thể bỏ qua các giá trị, như trong
myArray[myArray.length + 1000] = someValue;
Trong trường hợp đó, các giá trị ở giữa sẽ có giá trị không xác định.
Do đó, đây là một cách thực hành tốt khi lặp qua JavaScript để xác minh rằng giá trị thực sự tồn tại tại thời điểm đó.
Điều này có thể được thực hiện bởi một cái gì đó như sau:
if(myArray[i] === "undefined"){ continue; }
nếu bạn chắc chắn rằng bạn không có bất kỳ số 0 nào trong mảng thì bạn có thể thực hiện:
if(!myArray[i]){ continue; }
Tất nhiên, đảm bảo trong trường hợp này bạn không sử dụng như điều kiện myArray [i] (vì một số người trên internet đề xuất dựa trên kết thúc rằng ngay khi tôi lớn hơn thì chỉ số cao nhất sẽ trả về không xác định mà sẽ đánh giá sai)
"undefined"
. Nó phải đọc void 0
! "undefined"
là một chuỗi và "undefined" !== void 0
do đó, bạn if(myArray[i]
là sai trừ khi mảng tại chỉ mục i
được đặt thành chuỗi có nội dung tương đương 'u'+'n'+'d'+'e'+'f'+'i'+'n'+'e'+'d'
. Cũng lưu ý rằng bạn không nên sử dụng undefined
, thay vào đó sử dụng void 0
. Bởi vì void 0
luôn luôn là giá trị không xác định, trong khi undefined
có thể được xác định thông qua một cái gì đó như function x(undefined) { alert(undefined) } x("hello world")
, vì vậy bạn không thể chắc chắn nếu ai đó vô tình đặt window["undefined"]=1
hoặc tương tự.
Nối phần tử đơn
//Append to the end
arrName.push('newName1');
//Prepend to the start
arrName.unshift('newName1');
//Insert at index 1
arrName.splice(1, 0,'newName1');
//1: index number, 0: number of element to remove, newName1: new element
// Replace index 3 (of exists), add new element otherwise.
arrName[3] = 'newName1';
Nối nhiều yếu tố
//Insert from index number 1
arrName.splice(1, 0,'newElemenet1', 'newElemenet2', 'newElemenet3');
//1: index number from where insert starts,
//0: number of element to remove,
//newElemenet1,2,3: new elements
Nối mảng
//join two or more arrays
arrName.concat(newAry1, newAry2);
//newAry1,newAry2: Two different arrays which are to be combined (concatenated) to an existing array
arrName.push('newElemenet1, newElemenet2, newElemenet3')
?
arrName
là chiều dài 1
.
myarray[myarray.length] = 'new element value added to the end of the array';
myarray.length trả về số lượng chuỗi trong mảng. JS dựa trên 0 nên khóa phần tử tiếp theo của mảng sẽ là độ dài hiện tại của mảng. VÍ DỤ:
var myarray = [0, 1, 2, 3],
myarrayLength = myarray.length; //myarrayLength is set to 4
Chỉ muốn thêm một đoạn trích để thêm phần tử không phá hủy.
var newArr = oldArr.concat([newEl]);
Vì Array.prototype.push thêm một hoặc nhiều phần tử vào cuối một mảng và trả về độ dài mới của mảng , đôi khi chúng tôi chỉ muốn lấy mảng cập nhật mới để chúng tôi có thể làm như vậy:
const arr = [1, 2, 3];
const val = 4;
arr.concat([val]); // [1, 2, 3, 4]
Hoặc chỉ:
[...arr, val] // [1, 2, 3, 4]
bạn có thể làm điều đó bằng tính năng javascript Es 6 mới:
// initialize array
var arr = [
"Hi",
"Hello",
"Bangladesh"
];
// append new value to the array
arr= [...arr , "Feni"];
// or you can put a variable value
var testValue = "Cool";
arr = [...arr , testValue ];
console.log(arr);
// final output [ 'Hi', 'Hello', 'Bangladesh', 'Feni', 'Cool' ]
Nếu bạn muốn kết hợp 2 mảng mà không trùng lặp, bạn có thể thử mã bên dưới
array_merge = function (arr1, arr2) {
return arr1.concat(arr2.filter(function(item){
return arr1.indexOf(item) < 0;
}))
}
sử dụng:
array1 = ['1', '2', '3']
array2 = ['2', '3', '4', '5']
combined_array = array_merge(array1, array2)
Đầu ra: [1,2,3,4,5]
Để nối thêm một mục vào một mảng, hãy sử dụng push()
phương thức được cung cấp bởi đối tượng Array:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango')
console.log(fruits)
push()
làm biến đổi mảng ban đầu.
Để tạo một mảng mới thay vào đó, hãy sử dụng concat()
phương thức Array:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
Lưu ý rằng concat()
không thực sự thêm một mục vào mảng, nhưng tạo ra một mảng mới, mà bạn có thể gán cho một biến khác hoặc gán lại cho mảng ban đầu (khai báo nó là let
, vì bạn không thể gán lại a const
):
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
let fruits = ['banana', 'pear', 'apple']
fruits = fruits.concat('mango')
Để nối thêm một mục vào một mảng, bạn có thể sử dụng push()
bằng cách gọi nó với nhiều đối số:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango', 'melon', 'avocado')
console.log(fruits)
Bạn cũng có thể sử dụng concat()
phương pháp bạn đã thấy trước đây, chuyển qua danh sách các mục được phân tách bằng dấu phẩy:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango', 'melon', 'avocado')
console.log(allfruits)
hoặc một mảng:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat(['mango', 'melon', 'avocado'])
console.log(allfruits)
Hãy nhớ rằng như được mô tả trước đây phương thức này không làm thay đổi mảng ban đầu, nhưng nó trả về một mảng mới.
Ban đầu được đăng tại
Nếu bạn muốn nối một giá trị đơn vào một mảng, chỉ cần sử dụng phương thức đẩy. Nó sẽ thêm một phần tử mới vào cuối mảng.
Nhưng nếu bạn có ý định thêm nhiều phần tử thì lưu trữ các phần tử trong một mảng mới và nối mảng thứ hai với mảng thứ nhất ... theo cách bạn muốn.
arr=['a','b','c'];
arr.push('d');
//now print the array in console.log and it will contain 'a','b','c','d' as elements.
console.log(array);
Chúng tôi không có chức năng chắp thêm cho Array trong javascript, nhưng chúng tôi có đẩy và unshift , hãy tưởng tượng bạn có mảng dưới đây:
var arr = [1, 2, 3, 4, 5];
và chúng tôi muốn nối thêm một giá trị vào mảng này, chúng tôi có thể làm, Array.push (6) và nó sẽ thêm 6 vào cuối mảng:
arr.push(6); // return [1, 2, 3, 4, 5, 6];
ngoài ra chúng ta có thể sử dụng unshift, hãy xem cách chúng ta có thể áp dụng điều này:
arr.unshift(0); //return [0, 1, 2, 3, 4, 5];
Chúng là các hàm chính để thêm hoặc nối các giá trị mới vào các mảng.
Bạn có thể sử dụng phương pháp đẩy.
Array.prototype.append = function(destArray){
destArray = destArray || [];
this.push.call(this,...destArray);
return this;
}
var arr = [1,2,5,67];
var arr1 = [7,4,7,8];
console.log(arr.append(arr1));// [7, 4, 7, 8, 1, 4, 5, 67, 7]
console.log(arr.append("Hola"))//[1, 2, 5, 67, 7, 4, 7, 8, "H", "o", "l", "a"]
push()
thêm một phần tử mới vào cuối của một mảng.
pop()
loại bỏ một phần tử từ cuối một mảng.
Để nối thêm một đối tượng (chẳng hạn như chuỗi hoặc số) vào một mảng sử dụng -
array.push(toAppend);