Làm cách nào để tạo mảng đơn từ mảng lồng nhau trong JavaScript?

Bạn có thể sử dụng phương thức push() của Array hoặc ký hiệu lập chỉ mục để thêm các phần tử vào mảng nhiều chiều

Thêm phần tử vào mảng bên ngoài

let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData.push(['Peter', 24]);

console.log(studentsData); //[["Jack", 24], ["Sara", 23], ["Peter", 24]

Thêm phần tử vào mảng bên trong

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
// using push()
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1].push('hello');

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]

Bạn cũng có thể sử dụng phương thức splice() của Array để thêm một phần tử vào một chỉ mục đã chỉ định. Ví dụ,

let studentsData = [['Jack', 24], ['Sara', 23],];

// adding element at 1 index
studentsData.splice(1, 0, ['Peter', 24]);

console.log(studentsData); // [["Jack", 24], ["Peter", 24], ["Sara", 23]]

Xóa phần tử khỏi mảng đa chiều

Bạn có thể sử dụng phương thức pop() của Array để xóa phần tử khỏi mảng nhiều chiều. Ví dụ,

Xóa phần tử khỏi mảng ngoài

// remove the array element from outer array
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData.pop();

console.log(studentsData); // [["Jack", 24]]

Xóa phần tử khỏi mảng bên trong

// remove the element from the inner array
let studentsData = [['Jack', 24], ['Sara', 23]];
studentsData[1].pop();

console.log(studentsData); // [["Jack", 24], ["Sara"]]

Bạn cũng có thể sử dụng phương thức

let studentsData = [['Jack', 24], ['Sara', 23], ['Peter', 24]];
5 để xóa một phần tử tại một chỉ mục đã chỉ định. Ví dụ,

let studentsData = [['Jack', 24], ['Sara', 23], ['Peter', 24]];
0

Lặp lại Mảng đa chiều

Bạn có thể lặp qua một mảng nhiều chiều bằng cách sử dụng phương thức forEach() của Array để lặp qua mảng nhiều chiều. Ví dụ,

let studentsData = [['Jack', 24], ['Sara', 23], ['Peter', 24]];
1

đầu ra

let studentsData = [['Jack', 24], ['Sara', 23], ['Peter', 24]];
2

Phương thức

let studentsData = [['Jack', 24], ['Sara', 23], ['Peter', 24]];
6 đầu tiên được sử dụng để lặp qua các phần tử mảng bên ngoài và phương thức thứ hai
let studentsData = [['Jack', 24], ['Sara', 23], ['Peter', 24]];
6 được sử dụng để lặp lại các phần tử mảng bên trong

Tuy nhiên, đôi khi bạn muốn lưu trữ các giá trị có nhiều hơn một khóa. Đối với điều này, chúng ta có các mảng đa chiều


PHP - Mảng đa chiều

Mảng nhiều chiều là mảng chứa một hoặc nhiều mảng

PHP hỗ trợ các mảng đa chiều có độ sâu hai, ba, bốn, năm hoặc nhiều cấp độ hơn. Tuy nhiên, mảng sâu hơn ba cấp khó quản lý đối với hầu hết mọi người

Kích thước của một mảng cho biết số lượng chỉ số bạn cần để chọn một phần tử

  • Đối với mảng hai chiều, bạn cần hai chỉ số để chọn một phần tử
  • Đối với mảng ba chiều, bạn cần ba chỉ số để chọn một phần tử


PHP - Mảng hai chiều

Mảng hai chiều là mảng của mảng (mảng ba chiều là mảng của mảng của mảng)

Đầu tiên, hãy nhìn vào bảng sau

NameStockSoldVolvo2218BMW1513Saab52Land Rover1715

Chúng ta có thể lưu trữ dữ liệu từ bảng trên trong một mảng hai chiều, như thế này

$cars = mảng (
  mảng("Volvo",22,18),
  mảng("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);

Bây giờ mảng hai chiều $cars chứa bốn mảng và nó có hai chỉ số. hàng và cột

Để có quyền truy cập vào các phần tử của mảng $cars, chúng ta phải trỏ đến hai chỉ số (hàng và cột)

Ví dụ

echo $cars[0][0]. ". Trong kho. ". $car[0][1]. ", đã bán. ". $car[0][2]. ".
";
echo $cars[1][0]. ". Trong kho. ". $car[1][1]. ", đã bán. ". $car[1][2]. ".
";
echo $cars[2][0]. ". Trong kho. ". $car[2][1]. ", đã bán. ". $car[2][2]. ".
";
echo $cars[3][0]. ". Trong kho. ". $car[3][1]. ", đã bán. ". $car[3][2]. ".
";
?>

Tự mình thử »

Chúng ta cũng có thể đặt một vòng lặp

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
2 bên trong một vòng lặp
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
2 khác để lấy các phần tử của mảng $cars (chúng ta vẫn phải trỏ đến hai chỉ số)

Làm phẳng mảng là chuyển mảng nhiều lớp lồng nhau thành chỉ một lớp. Để giải thích nó bằng mã, nó sẽ là

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
4. Hãy xem nó hoạt động như thế nào

1. Mảng. nguyên mẫu. FlatMap + đệ quy

Trước tiên chúng ta hãy xem phương thức

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
5 được cung cấp trong ES6, đó là gọi
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
6 để lấy kết quả và sau đó gọi
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
7 trên kết quả, nghĩa là làm phẳng kết quả theo một lớp. Điều này hiệu quả hơn một chút so với việc gọi riêng hai phương thức này

Chúng ta có thể xác định xem mục hiện tại có phải là một mảng lồng nhau trong vòng lặp hay không, nếu có thì lặp lại, nếu không thì trả về trực tiếp. flatMap sẽ giúp chúng ta làm phẳng kết quả theo một lớp sau khi vòng lặp kết thúc

2. Mảng. nguyên mẫu. giảm + đệ quy

Sử dụng phương thức

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
8, chúng ta có thể thực hiện các phép tính tích lũy, vì các tham số của
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
9 có thể truyền cả mảng và mục đơn lẻ nên có thể triển khai trực tiếp trên một dòng

Ở đây

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
9 ở đây cũng có thể được thay thế bằng đẩy, xem Tùy chọn 2 để biết chi tiết

3. cho…của + đệ quy

Lặp lại mảng ban đầu, xác định xem mục hiện tại có phải là một mảng hay không, gọi đệ quy làm phẳng và sử dụng

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
9 để nối các kết quả đệ quy. Nếu nó không phải là một mảng, hãy đẩy trực tiếp vào kết quả

Tương tự, có thể thay thế

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
9 bằng đẩy, xem Tùy chọn 2 để biết chi tiết

4. trong khi + lặp lại

Theo cách này, API

// using push()
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1].push('hello');

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
3 được sử dụng để liên tục xác định xem có một mảng nào trong
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
50 hay không và nếu có, nó sẽ được làm phẳng cho đến khi không còn mục mảng nào trong mảng

Ở đây

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
51 API có thể được viết theo ba cách. Lưu ý sự khác biệt giữa cuộc gọi và áp dụng

5. (Chuỗi. Mảng. nguyên mẫu. toString) + (tách. JSON. phân tích cú pháp)

Khi xử lý mảng string hoặc mảng số ta có thể gọi

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
52 hoặc
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
53 để chuyển mảng sang kiểu string một cách tường minh để loại bỏ toàn bộ
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
54 trong mảng ban đầu sẽ được chuỗi
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
55. Sau đó, có hai phương pháp xử lý

  1. Gọi phương thức
    // using index notation
    let studentsData = [['Jack', 24], ['Sara', 23],];
    studentsData[1][2] = 'hello';
    
    console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
    56 để tách chuỗi bằng
    // using index notation
    let studentsData = [['Jack', 24], ['Sara', 23],];
    studentsData[1][2] = 'hello';
    
    console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
    57, sau đó bạn sẽ nhận được
    // using index notation
    let studentsData = [['Jack', 24], ['Sara', 23],];
    studentsData[1][2] = 'hello';
    
    console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
    58. Tại thời điểm này, loại của mỗi mục trong mảng là một chuỗi chứ không phải là một số, vì vậy chúng tôi gọi
    // using index notation
    let studentsData = [['Jack', 24], ['Sara', 23],];
    studentsData[1][2] = 'hello';
    
    console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
    6 để chuyển đổi nó thành một số một cách rõ ràng bằng cách gọi
    // using index notation
    let studentsData = [['Jack', 24], ['Sara', 23],];
    studentsData[1][2] = 'hello';
    
    console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
    60 trên mỗi mục của mảng
  2. Nối chuỗi thành
    // using index notation
    let studentsData = [['Jack', 24], ['Sara', 23],];
    studentsData[1][2] = 'hello';
    
    console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
    61, sau đó gọi
    // using index notation
    let studentsData = [['Jack', 24], ['Sara', 23],];
    studentsData[1][2] = 'hello';
    
    console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
    62 để xây dựng chuỗi thành một đối tượng mảng
6. JSON. xâu chuỗi + RegExp + (tách. JSON. phân tích cú pháp)

Khi xử lý mảng chuỗi hoặc mảng số, chúng ta cũng sử dụng

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
63 trên mảng để nhận được
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
64, sau đó sử dụng RegExp để loại bỏ tất cả
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
54, nhận được
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
55. Điều này có tác dụng tương tự như sử dụng
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
52 hoặc
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
53

Các bước tiếp theo giống như sơ đồ 5, sử dụng

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
56 hoặc
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
62 để có được kết quả như ý muốn

7. bằng phẳng

Chúng ta có thể trực tiếp sử dụng phương thức

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
71 do ES6 cung cấp, phương thức này có thể truyền độ sâu làm tham số để chỉ ra độ sâu cần mở rộng. Ở đây chúng tôi chỉ định
// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
72, cho biết rằng chúng tôi muốn chuyển đổi bất kỳ độ sâu nào của các mảng lồng nhau thành mảng một chiều

Điều gì sẽ xảy ra nếu chúng ta cũng muốn thực hiện phương pháp đi qua ở một độ sâu xác định như bằng phẳng và sau đó làm phẳng nó?

Chỉ cần liên tục giảm số lần trong đệ quy hoặc lặp lại và xác định xem giá trị hiện tại có lớn hơn 0 hay không

Chúng tôi cũng có thể xác minh kết quả bằng cách sử dụng các so sánh sâu được thực hiện trong bài đăng trước của tôi và chúng tôi có thể thấy rằng chúng đáp ứng mong đợi của chúng tôi

Cuối cùng, tôi là Lee. Mình sẽ tiếp tục ra những câu chuyện liên quan đến công nghệ front-end. Nếu bạn thích những câu chuyện như vậy và muốn ủng hộ tôi, hãy cân nhắc trở thành thành viên của Medium. Nó có giá 5 đô la mỗi tháng và cung cấp cho bạn quyền truy cập không giới hạn vào nội dung Phương tiện. Tôi sẽ nhận được một ít hoa hồng nếu bạn đăng ký qua liên kết của tôi

Sự hỗ trợ của bạn rất quan trọng đối với tôi — cảm ơn bạn

Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin miễn phí hàng tuần của chúng tôi. Theo dõi chúng tôi trên Twitter và LinkedIn. Tham gia cộng đồng của chúng tôi

Làm cách nào để chuyển đổi mảng lồng nhau thành mảng đơn trong JavaScript?

Tóm tắt .
Sử dụng mảng. nguyên mẫu. phương thức flat() để làm phẳng một mảng với các mảng lồng nhau
Sử dụng đối số độ sâu để chỉ định độ sâu của các mảng lồng nhau sẽ được làm phẳng. Độ sâu là 1 theo mặc định
Flat() cũng loại bỏ các lỗ trong mảng với các ô trống

Làm cách nào để làm phẳng các mảng lồng nhau trong JavaScript?

Mảng. phương thức phẳng() chủ yếu được sử dụng để làm phẳng một mảng JavaScript lồng nhau. Nó chấp nhận mức độ sâu làm đối số và trả về một mảng mới trong đó tất cả các phần tử của mảng con được nối theo độ sâu đã chỉ định.

Làm cách nào để hợp nhất một mảng với một mảng khác trong JavaScript?

Phương thức concat() được sử dụng để hợp nhất hai hoặc nhiều mảng. Phương thức 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.

Làm cách nào để tạo mảng bên trong mảng trong JavaScript?

Mảng. phương thức flat() tạo ra một mảng mới bằng cách nối đệ quy tất cả các mảng con đến độ sâu mà bạn chỉ định . Nói một cách đơn giản, nếu bạn có một mảng gồm nhiều mảng (có thể có nhiều mảng hơn bên trong mảng đó), thì flat() sẽ giúp bạn nối tất cả các phần tử lại với nhau thành một mảng duy nhất.