JavaScript có nhiều cách để làm bất cứ điều gì. Tôi đã viết trên 10 cách để viết ống/sáng tác bằng JavaScript và bây giờ chúng tôi đang thực hiện các mảng. Kể từ khi ES6 giảm, đây là phương pháp phổ biến nhất. Nó có một cú pháp ngắn gọn và bạn sẽ thấy nó cực kỳ hữu ích khi sử dụng các thư viện như React và Redux. Lưu ý: Điều này không sao chép một cách an toàn các mảng đa chiều. Các giá trị mảng/đối tượng được sao chép bằng tham chiếu thay vì theo giá trị. This doesn’t safely copy multi-dimensional arrays. Array/object values are copied by reference instead of by value. Điều này là tốt Điều này không ổn Tôi tưởng tượng cách tiếp cận này là ít phổ biến nhất, được đưa ra cách lập trình chức năng hợp thời trang mà trở thành trong vòng tròn của chúng tôi. Tinh khiết hoặc không trong sạch, tuyên bố hoặc bắt buộc, nó được hoàn thành công việc! Lưu ý: Điều này không sao chép một cách an toàn các mảng đa chiều. Vì bạn sử dụng toán tử 1. Người vận hành lan truyền [bản sao nông]
numbers = [1, 2, 3];
numbersCopy = [...numbers];
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
2. Vòng lặp cũ cho [] [bản sao nông]
numbers = [1, 2, 3];
numbersCopy = [];
for [i = 0; i < numbers.length; i++] {
numbersCopy[i] = numbers[i];
}
1, nên nó sẽ gán các đối tượng/mảng bằng cách tham chiếu thay vì theo giá trị. This doesn’t safely copy multi-dimensional arrays. Since you’re using the nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
1 operator, it’ll assign objects/arrays by reference instead of by value.nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
Điều này là tốt
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
Điều này không ổn
nestedNumbers = [[1], [2]];
numbersCopy = [];
for [i = 0; i < nestedNumbers.length; i++] {
numbersCopy[i] = nestedNumbers[i];
}
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
2. Vòng lặp cũ cho [] [bản sao nông]
Tôi tưởng tượng cách tiếp cận này là ít phổ biến nhất, được đưa ra cách lập trình chức năng hợp thời trang mà trở thành trong vòng tròn của chúng tôi.
numbers = [1, 2, 3];
numbersCopy = [];
i = -1;
while [++i < numbers.length] {
numbersCopy[i] = numbers[i];
}
Tinh khiết hoặc không trong sạch, tuyên bố hoặc bắt buộc, nó được hoàn thành công việc! This also assigns objects/arrays by reference instead of by value.
Điều này là tốt
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
Điều này không ổn
nestedNumbers = [[1], [2]];
numbersCopy = [];
i = -1;
while [++i < nestedNumbers.length] {
numbersCopy[i] = nestedNumbers[i];
}
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
2. Vòng lặp cũ cho [] [bản sao nông]
Tôi tưởng tượng cách tiếp cận này là ít phổ biến nhất, được đưa ra cách lập trình chức năng hợp thời trang mà trở thành trong vòng tròn của chúng tôi.
Tinh khiết hoặc không trong sạch, tuyên bố hoặc bắt buộc, nó được hoàn thành công việc!
Lưu ý: Điều này không sao chép một cách an toàn các mảng đa chiều. Vì bạn sử dụng toán tử
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
1, nên nó sẽ gán các đối tượng/mảng bằng cách tham chiếu thay vì theo giá trị.numbers = [1, 2, 3];
double = [x] => x * 2;
numbers.map[double];
3. Vòng lặp cũ trong while [] [bản sao nông]
Giống như ________ 22, Impure, mệnh lệnh, blah, blah, blah, nó hoạt động! ?
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
0Lưu ý: Điều này cũng gán các đối tượng/mảng bằng tham chiếu thay vì theo giá trị.
4. mảng.map [bản sao nông]
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
1Tinh khiết hoặc không trong sạch, tuyên bố hoặc bắt buộc, nó được hoàn thành công việc! This also assigns objects/arrays by reference instead of by value.
Lưu ý: Điều này không sao chép một cách an toàn các mảng đa chiều. Vì bạn sử dụng toán tử nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
1, nên nó sẽ gán các đối tượng/mảng bằng cách tham chiếu thay vì theo giá trị.
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
3. Vòng lặp cũ trong while [] [bản sao nông]
Giống như ________ 22, Impure, mệnh lệnh, blah, blah, blah, nó hoạt động! ?
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
2Lưu ý: Điều này cũng gán các đối tượng/mảng bằng tham chiếu thay vì theo giá trị.
4. mảng.map [bản sao nông]
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
3Quay trở lại lãnh thổ hiện đại, chúng tôi sẽ tìm thấy chức năng
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
3. Bắt nguồn từ toán học, nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
3 là khái niệm biến một tập hợp thành một loại khác, trong khi bảo tồn cấu trúc.Tinh khiết hoặc không trong sạch, tuyên bố hoặc bắt buộc, nó được hoàn thành công việc! This also assigns objects/arrays by reference instead of by value.
Lưu ý: Điều này không sao chép một cách an toàn các mảng đa chiều. Vì bạn sử dụng toán tử nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
1, nên nó sẽ gán các đối tượng/mảng bằng cách tham chiếu thay vì theo giá trị.
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
3. Vòng lặp cũ trong while [] [bản sao nông]
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
4Giống như ________ 22, Impure, mệnh lệnh, blah, blah, blah, nó hoạt động! ?
Lưu ý: Điều này cũng gán các đối tượng/mảng bằng tham chiếu thay vì theo giá trị.
Tinh khiết hoặc không trong sạch, tuyên bố hoặc bắt buộc, nó được hoàn thành công việc! This also assigns objects/arrays by reference instead of by value.
Lưu ý: Điều này không sao chép một cách an toàn các mảng đa chiều. Vì bạn sử dụng toán tử nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
1, nên nó sẽ gán các đối tượng/mảng bằng cách tham chiếu thay vì theo giá trị.
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
3. Vòng lặp cũ trong while [] [bản sao nông]
Giống như ________ 22, Impure, mệnh lệnh, blah, blah, blah, nó hoạt động! ?
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
5Lưu ý: Điều này cũng gán các đối tượng/mảng bằng tham chiếu thay vì theo giá trị.
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
64. mảng.map [bản sao nông] This is a shallow copy, so it also assigns objects/arrays by reference instead of by value.
Quay trở lại lãnh thổ hiện đại, chúng tôi sẽ tìm thấy chức năng nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
3. Bắt nguồn từ toán học, nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
3 là khái niệm biến một tập hợp thành một loại khác, trong khi bảo tồn cấu trúc.
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
Trong tiếng Anh, điều đó có nghĩa là
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
5 trả về một mảng có cùng độ dài mỗi lần.Để tăng gấp đôi danh sách các số, hãy sử dụng
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
3 với hàm nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
7.Còn nhân bản thì sao ??
Đúng vậy, bài viết này về các mảng nhân bản. Để nhân đôi một mảng, chỉ cần trả lại phần tử trong cuộc gọi
3 của bạn. safely copies deeply nested objects/arrays!nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
7Nếu bạn muốn có một chút toán học, nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
9 được gọi là danh tính. Nó trả về bất kỳ tham số nào mà nó đã được đưa ra.
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
numbers = [1, 2, 3];
numbersCopy = [];
for [i = 0; i < numbers.length; i++] {
numbersCopy[i] = numbers[i];
}
0 Bản sao một danh sách.numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
85. Array.Filter [bản sao nông]
numbersCopy.push[4];
console.log[numbers, numbersCopy];
// [1, 2, 3] and [1, 2, 3, 4]
// numbers is left alone
9Tinh khiết hoặc không trong sạch, tuyên bố hoặc bắt buộc, nó được hoàn thành công việc! This also assigns objects/arrays by reference instead of by value.
Lưu ý: Điều này không sao chép một cách an toàn các mảng đa chiều. Vì bạn sử dụng toán tử nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
1, nên nó sẽ gán các đối tượng/mảng bằng cách tham chiếu thay vì theo giá trị.
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
3. Vòng lặp cũ trong while [] [bản sao nông]
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
0Tinh khiết hoặc không trong sạch, tuyên bố hoặc bắt buộc, nó được hoàn thành công việc! This also assigns objects/arrays by reference instead of by value.
Lưu ý: Điều này không sao chép một cách an toàn các mảng đa chiều. Vì bạn sử dụng toán tử nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
1, nên nó sẽ gán các đối tượng/mảng bằng cách tham chiếu thay vì theo giá trị.
nestedNumbers = [[1], [2]];
numbersCopy = [...nestedNumbers];
numbersCopy[0].push[300];
console.log[nestedNumbers, numbersCopy];
// [[1, 300], [2]]
// [[1, 300], [2]]
// They've both been changed because they share references
3. Vòng lặp cũ trong while [] [bản sao nông]
Giống như ________ 22, Impure, mệnh lệnh, blah, blah, blah, nó hoạt động! ?
Lưu ý: Điều này cũng gán các đối tượng/mảng bằng tham chiếu thay vì theo giá trị.