Làm thế nào để bạn chuyển một mảng trong javascript?

Khi bạn chuyển một mảng vào một hàm trong JavaScript, nó sẽ được chuyển dưới dạng tham chiếu. Bất cứ điều gì bạn làm thay đổi mảng bên trong hàm cũng sẽ thay đổi mảng ban đầu. ví dụ: mã này sẽ ghi [1, 2, 3] vào bảng điều khiển

var array = [1, 2, 3, 4];const mutate = arr => {
arr.pop[];
return arr;
}
mutate[array];console.log[array]; // result [1, 2, 3]

sao chép mảng đã truyền vào một mảng mới và thực hiện tất cả quá trình xử lý của bạn trên mảng mới không giúp được gì

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!

Điều này xảy ra vì var newArr = arr; . Tất cả điều này làm là trỏ một biến mới vào cùng một mảng

Bạn có thể sử dụng Mảng. từ

var newArr = Array.from[arr];

hoặc lát[]

var newArr = arr.slice[];

để sao chép mảng được truyền vào hàm thành một mảng mới. Hơn bạn có thể thay đổi mảng mới mà không làm thay đổi mảng ban đầu

… Cách khác …

Tôi đã xem định nghĩa của các tham số còn lại và các toán tử trải rộng sáng nay và tôi nhận ra rằng có một cách khác để truyền một mảng dưới dạng một giá trị thay vì một tham chiếu

Tham số còn lại cho phép chúng ta biểu diễn số lượng đối số không xác định dưới dạng một mảng. Khi bạn định nghĩa một hàm bằng tham số còn lại, các đối số của hàm, bất kể chúng là bao nhiêu, sẽ được chuyển thành một mảng

toán tử trải rộng cho phép một iterable, giống như một mảng, được mở rộng tại chỗ. Nếu bạn sử dụng toán tử trải rộng để chuyển một mảng vào lệnh gọi hàm, hàm sẽ nhận các giá trị riêng lẻ của mảng làm đối số

Nếu chúng ta kết hợp hai khái niệm này, bằng cách xác định hàm của chúng ta với tham số còn lại và gọi hàm bằng toán tử trải rộng, chúng ta có thể thực hiện các thao tác trên mảng với hàm mà không làm thay đổi mảng ban đầu

var array = [1, 2, 3, 4];// use rest parameter in function definition
// to turn passed values into array
const noMutate = […arr] => {
arr.pop[];
return arr;
}
// use spread operator in function call to
// turn array elements into function arguments
noMutate[…array];
console.log[array]; // result [1, 2, 3, 4]
Bỏ qua các đối số khác

Bạn có thể chuyển các đối số khác với tham số còn lại miễn là chúng xuất hiện trước tham số còn lại. Ví dụ: bạn có thể triển khai phiên bản hàm lọc của riêng mình để nhân mọi phần tử của một mảng với một số khác như thế này

var arr = [1, 2, 3, 4];const noMutate = [num, …arr] => {
var multiple = []
for[elem of arr] multiple.push[elem * num];
return multiple;
}
var double = noMutate[2, …arr];console.log[double]; // returns [2, 4, 6, 8]
console.log[arr]; // not mutated: [1, 2, 3, 4]

Bạn thậm chí có thể sử dụng toán tử trải rộng để chuyển vào các thuộc tính của một đối tượng JavaScript như thế này

var obj = {
arr: [1, 2, 3, 4]
};
const noMutate = [num, …arr] => {
console.log[arr];
var multiple = []
for[elem of arr] multiple.push[elem * num];
return multiple;
}
var double = noMutate[2, …obj.arr];console.log[double]; // returns [2, 4, 6, 8]
console.log[arr]; // not mutated: [1, 2, 3, 4]

Hiệu suất khôn ngoan, tôi không chắc điều này so với việc sử dụng Array như thế nào. từ [] hoặc. slice[], nhưng nó loại bỏ một dòng mã và tôi nghĩ nó làm cho mã của bạn trông gọn gàng hơn. Nếu có ai biết điều này ảnh hưởng đến hiệu suất như thế nào, vui lòng cho tôi biết

Phương pháp 1. Sử dụng phương thức apply[]. Phương thức apply[] được sử dụng để gọi một hàm với các đối số đã cho là một mảng hoặc đối tượng giống như mảng. Nó chứa hai tham số. Giá trị này cung cấp lời gọi hàm và mảng đối số chứa mảng đối số được truyền

Phương thức apply[] được sử dụng trên hàm phải được truyền dưới dạng mảng đối số. Tham số đầu tiên được chỉ định là 'null' và tham số thứ hai được chỉ định với mảng đối số. Điều này sẽ gọi hàm với mảng đối số được chỉ định

cú pháp




arrayToPass = [1,"Two", 3];

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
0

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
1
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
2
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
3

Thí dụ




var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
4

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
5
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
6"Two"0

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
0

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
5"Two"3"Two"0

"Two"5

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
5____87"Two"0

"Two"9, 3];0

"Two"9, 3];2

"Two"5, 3];4"Two"7"Two"0

, 3];4"Two"3"Two"0

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
0

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
5
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
02____80

"Two"5

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
5
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
06
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
07
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
08
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
09"Two"0

"Two"9

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
12

________ 85 ________ 94 ________ 106 ________ 80

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
17

"Two"5

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
5____120"Two"0

"Two"9

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
23

"Two"9

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
25

"Two"5, 3];4

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
20"Two"0

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
17

"Two"5

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
5____133"Two"0

"Two"9

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
36

"Two"9

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
38

"Two"5, 3];4

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
33"Two"0

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
17

"Two"5

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
5
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
46
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
47
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
08
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
49"Two"0

"Two"9

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
52

"Two"5, 3];4

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
46"Two"0

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
17

"Two"5

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
5
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
60
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
61
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
08
var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
63"Two"0

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
65

"Two"9

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
67

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
68____169

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
65

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
68"Two"02

"Two"9"Two"04

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
17

"Two"9"Two"07

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
68"Two"09

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
68"Two"11

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
68____813

"Two"9"Two"04

"Two"5, 3];4

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
60"Two"0

, 3];4

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
02____80

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
0

, 3];4

var array = [1, 2, 3, 4];const mutate = arr => {
var newArr = arr;
newArr.pop[];
return newArr;
}
mutate[array];console.log[array]; // result [1, 2, 3] - Still mutated!
6____80

đầu ra

  • Trước khi nhấp vào nút
  • Sau khi nhấp vào nút

Phương pháp 2. Sử dụng cú pháp lây lan. Cú pháp trải rộng được sử dụng ở nơi không có hoặc nhiều đối số được mong đợi. Nó có thể được sử dụng với các trình vòng lặp mở rộng ở nơi có thể không có số lượng đối số dự kiến ​​cố định [như tham số hàm]

Hàm bắt buộc được gọi như đã cho mảng đối số bằng cách sử dụng cú pháp trải rộng để nó sẽ điền vào các đối số của hàm từ mảng

Bạn có thể vượt qua một mảng?

Không thể truyền toàn bộ mảng làm đối số cho một hàm trong C++ . Tuy nhiên, bạn có thể chuyển một con trỏ tới một mảng không có chỉ mục bằng cách chỉ định tên của mảng.

Đó là cách chính xác để mảng JavaScript?

Sử dụng mảng theo nghĩa đen là cách dễ nhất để tạo Mảng JavaScript. cú pháp. const tên_mảng = [mục1,mục2,. ]; .

Bạn có thể đặt một mảng làm tham số hàm JavaScript không?

Như vậy, Javascript cung cấp cho chúng ta hai cách để sử dụng mảng làm tham số hàm trong Javascript - apply[] và toán tử trải rộng .

Vượt qua một mảng có nghĩa là gì?

Vì mảng được truyền dưới dạng con trỏ nên bộ nhớ của mảng không được sao chép . Hàm sử dụng bộ nhớ của cùng một mảng được truyền cho nó và có thể thay đổi nội dung trong bộ nhớ đó. Truyền mảng theo tham chiếu. Vì mảng đã là con trỏ, nên thường không có lý do gì để chuyển một mảng rõ ràng bằng tham chiếu.

Chủ Đề