Hướng dẫn function that takes in an array javascript - hàm nhận trong một mảng javascript
Tôi có một mảng và tôi muốn truyền nó dưới dạng tham số trong một hàm như: Show
Tôi đang nhận được mảng đó [0] không được xác định, điều này có thể đúng vì bên trong hàm tôi chưa bao giờ viết loại mảng mảng nào. Vì thế,
Hỏi ngày 18 tháng 12 năm 2010 lúc 19:04Dec 18, 2010 at 19:04
1 Chỉ cần xóa 0, như thế này:
Chắc chắn bạn có thể vượt qua một mảng, nhưng để có được phần tử ở vị trí đó, chỉ sử dụng 1, 0 sẽ lấy thuộc tính 3 khỏi một đối tượng ở vị trí đó trong mảng - đối với những thứ như chuỗi, số, vv không hiện hữu. Ví dụ, 4 cũng sẽ là 5.Đã trả lời ngày 18 tháng 12 năm 2010 lúc 19:07Dec 18, 2010 at 19:07
Nick Cravernick CraverNick Craver 616K134 Huy hiệu vàng1293 Huy hiệu bạc1152 Huy hiệu đồng134 gold badges1293 silver badges1152 bronze badges 2 JavaScript là một ngôn ngữ được đánh máy động. Điều này có nghĩa là bạn không bao giờ cần phải khai báo loại đối số hàm (hoặc bất kỳ biến nào khác). Vì vậy, mã của bạn sẽ hoạt động miễn là 6 là một mảng và chứa các phần tử có thuộc tính 3.Đã trả lời ngày 18 tháng 12 năm 2010 lúc 19:09Dec 18, 2010 at 19:09
AmnonamnonAmnon 7.5122 Huy hiệu vàng25 Huy hiệu bạc34 Huy hiệu đồng2 gold badges25 silver badges34 bronze badges Có thể chuyển các mảng cho các chức năng và không có yêu cầu đặc biệt để xử lý chúng. Bạn có chắc chắn rằng mảng bạn đang chuyển đến chức năng của bạn thực sự có một phần tử tại 8?Đã trả lời ngày 18 tháng 12 năm 2010 lúc 19:07Dec 18, 2010 at 19:07
Nick Cravernick CraverClosureCowboy 616K134 Huy hiệu vàng1293 Huy hiệu bạc1152 Huy hiệu đồng13 gold badges56 silver badges70 bronze badges Trong JavaScript, các mảng không phải là nguyên thủy mà thay vào đó là các đối tượng ____49 với các đặc điểm cốt lõi sau: Người xây dựng 4Tạo một đối tượng 9 mới.Tính chất tĩnh 6Trả về hàm tạo 9.Phương pháp tĩnh 8Tạo một thể hiện 9 mới từ một đối tượng giống như mảng hoặc đối tượng có thể lặp lại. 0Trả về 1 nếu đối số là một mảng hoặc 2 khác. 3Tạo một thể hiện 9 mới với một số lượng đối số thay đổi, bất kể số hoặc loại đối số.
Thuộc tính thể hiện 5Phản ánh số lượng các yếu tố trong một mảng. 6Chứa các tên thuộc tính không được bao gồm trong tiêu chuẩn ECMAScript trước phiên bản ES2015 và bị bỏ qua cho các mục đích liên kết tuyên bố 7.Phương pháp thể hiện 8Trả về mục mảng tại chỉ mục đã cho. Chấp nhận số nguyên âm, được tính lại từ mục cuối cùng. 9Trả về một mảng mới là mảng gọi được nối với (các) mảng khác và/hoặc giá trị. 0Sao chép một chuỗi các phần tử mảng trong một mảng. 1Trả về một đối tượng lặp mảng mới chứa các cặp khóa/giá trị cho mỗi chỉ mục trong một mảng. 2Trả về 1 Nếu mọi phần tử trong mảng gọi thỏa mãn chức năng kiểm tra. 4Điền vào tất cả các phần tử của một mảng từ chỉ mục bắt đầu sang chỉ mục cuối với giá trị tĩnh. 5Trả về một mảng mới chứa tất cả các phần tử của mảng gọi mà hàm lọc được cung cấp trả về 1. 7Trả về giá trị của phần tử đầu tiên trong mảng thỏa mãn chức năng thử nghiệm được cung cấp hoặc 5 nếu không tìm thấy phần tử thích hợp. 9Trả về chỉ số của phần tử đầu tiên trong mảng thỏa mãn chức năng thử nghiệm được cung cấp hoặc 0 nếu không tìm thấy phần tử thích hợp. 1Trả về giá trị của phần tử cuối cùng trong mảng thỏa mãn chức năng thử nghiệm được cung cấp hoặc 5 nếu không tìm thấy phần tử thích hợp. 3Trả về chỉ số của phần tử cuối cùng trong mảng thỏa mãn chức năng thử nghiệm được cung cấp hoặc 0 nếu không tìm thấy phần tử thích hợp. 5Trả về một mảng mới với tất cả các yếu tố mảng con được liên kết vào nó đệ quy lên đến độ sâu được chỉ định. 6Trả về một mảng mới được hình thành bằng cách áp dụng một hàm gọi lại đã cho cho từng phần tử của mảng gọi, sau đó làm phẳng kết quả theo một cấp. 7Gọi một hàm cho mỗi phần tử trong mảng gọi. 8 Thử nghiệmExperimentalNhóm các phần tử của một mảng thành một đối tượng theo các chuỗi được trả về bởi một hàm thử nghiệm. 9 Thử nghiệmExperimentalNhóm các phần tử của một mảng thành 0 theo các giá trị được trả về bởi hàm thử nghiệm. 1Xác định xem mảng gọi có chứa giá trị hay không, trả về 1 hay 2 nếu thích hợp. 4Trả về chỉ mục đầu tiên (ít nhất) mà tại đó một phần tử nhất định có thể được tìm thấy trong mảng gọi. 5Tham gia tất cả các yếu tố của một mảng thành một chuỗi. 6Trả về một trình lặp mảng mới chứa các phím cho mỗi chỉ mục trong mảng gọi. 7Trả về chỉ mục cuối cùng (lớn nhất) mà tại đó một phần tử nhất định có thể được tìm thấy trong mảng gọi hoặc 0 nếu không tìm thấy. 9Trả về một mảng mới chứa kết quả gọi một hàm trên mọi phần tử trong mảng gọi. 00Loại bỏ phần tử cuối cùng khỏi một mảng và trả về phần tử đó. 01Thêm một hoặc nhiều phần tử vào cuối một mảng và trả về 2 mới của mảng. 03Thực thi chức năng gọi lại "giảm" do người dùng cung cấp trên mỗi phần tử của mảng (từ trái sang phải), để giảm nó xuống một giá trị duy nhất. 04Thực thi chức năng gọi lại "giảm" do người dùng cung cấp trên mỗi phần tử của mảng (từ phải sang trái), để giảm nó xuống một giá trị duy nhất. 05Đảo ngược thứ tự của các yếu tố của một mảng tại chỗ. (Đầu tiên trở thành người cuối cùng, lần cuối cùng trở thành đầu tiên.) 06Loại bỏ phần tử đầu tiên khỏi một mảng và trả về phần tử đó. 07Trích xuất một phần của mảng gọi và trả về một mảng mới. 08Trả về 1 Nếu ít nhất một phần tử trong mảng gọi thỏa mãn chức năng kiểm tra được cung cấp. 10Sắp xếp các phần tử của một mảng tại chỗ và trả về mảng. 11Thêm và/hoặc loại bỏ các yếu tố khỏi một mảng. 12Trả về một chuỗi cục bộ đại diện cho mảng gọi và các yếu tố của nó. Ghi đè phương thức 13. 14Trả về một chuỗi đại diện cho mảng gọi và các phần tử của nó. Ghi đè phương thức 15. 16Thêm một hoặc nhiều phần tử vào mặt trước của một mảng và trả về 2 mới của mảng. 18Trả về một đối tượng lặp mảng mới chứa các giá trị cho mỗi chỉ mục trong mảng. 19Một bí danh cho phương thức 20 theo mặc định.Ví dụPhần này cung cấp một số ví dụ về các hoạt động mảng phổ biến trong JavaScript. Tạo một mảngVí dụ này hiển thị ba cách để tạo mảng mới: đầu tiên sử dụng ký hiệu theo nghĩa đen của mảng, sau đó sử dụng hàm tạo 4 và cuối cùng sử dụng 22 để xây dựng mảng từ một chuỗi.
Tạo một chuỗi từ một mảngVí dụ này sử dụng phương thức 23 để tạo một chuỗi từ mảng 24.
Truy cập một mục mảng theo chỉ mục của nóVí dụ này cho thấy cách truy cập các mục trong mảng 24 bằng cách chỉ định số chỉ mục của vị trí của chúng trong mảng.
Tìm chỉ mục của một mục trong một mảngVí dụ này sử dụng phương thức 26 để tìm vị trí (chỉ mục) của chuỗi 27 trong mảng 24.
Kiểm tra xem một mảng có chứa một mục nào đó khôngVí dụ này cho thấy hai cách để kiểm tra xem mảng 24 có chứa 27 và 31: Đầu tiên với phương thức 32, sau đó với phương thức 26 để kiểm tra giá trị chỉ mục không phải là 0.
Nối một mục vào một mảngVí dụ này sử dụng phương thức 35 để nối một chuỗi mới vào mảng 24.
Xóa mục cuối cùng khỏi một mảngVí dụ này sử dụng phương thức 37 để xóa mục cuối cùng khỏi mảng 24.
Lưu ý: 37 can only be used to remove the last item from an array. To remove multiple items from the end of an array, see the next example.Xóa nhiều mục từ cuối một mảngVí dụ này sử dụng phương thức 40 để loại bỏ 3 mục cuối cùng khỏi mảng 24.
Cắt ngắn một mảng xuống chỉ là n mục đầu tiên của nóVí dụ này sử dụng phương thức 40 để cắt giảm mảng 24 xuống chỉ còn 2 mục đầu tiên. 0Xóa mục đầu tiên khỏi một mảngVí dụ này sử dụng phương thức 44 để xóa mục đầu tiên khỏi mảng 24. 1Lưu ý: 44 can only be used to remove the first item from an array. To remove multiple items from the beginning of an array, see the next example.Xóa nhiều mục từ đầu một mảngVí dụ này sử dụng phương thức 40 để loại bỏ 3 mục đầu tiên khỏi mảng 24. 2Thêm một mục đầu tiên mới vào một mảngVí dụ này sử dụng phương thức 49 để thêm, tại Index 0, một mục mới cho mảng 24 - biến nó thành mục đầu tiên mới trong mảng. 3Xóa một mục duy nhất bằng chỉ mụcVí dụ này sử dụng phương thức 40 để xóa chuỗi 27 khỏi mảng 24 - bằng cách chỉ định vị trí chỉ mục của 27. 4Xóa nhiều mục bằng chỉ mụcVí dụ này sử dụng phương thức 40 để loại bỏ các chuỗi 27 và 58 khỏi mảng 24 - bằng cách chỉ định vị trí chỉ mục của 27, cùng với số lượng tổng số mục để xóa. 5Thay thế nhiều mục trong một mảngVí dụ này sử dụng phương thức 40 để thay thế 2 mục cuối cùng trong mảng 24 bằng các mục mới. 6Lặp lại trên một mảngVí dụ này sử dụng vòng lặp 63 để lặp qua mảng 24, đăng nhập từng mục vào bảng điều khiển. 7Nhưng 63 chỉ là một trong nhiều cách để lặp lại bất kỳ mảng nào; Để biết thêm các cách, xem các vòng lặp và lặp lại, và xem tài liệu cho 66, 67, 68, 69, 70 và 71 - và xem ví dụ tiếp theo, sử dụng phương pháp 72.Gọi một hàm trên mỗi phần tử trong một mảngVí dụ này sử dụng phương thức 72 để gọi hàm trên mỗi phần tử trong mảng 24; Hàm làm cho mỗi mục được ghi vào bảng điều khiển, cùng với số chỉ mục của mục. 8Hợp nhất nhiều mảng với nhauVí dụ này sử dụng phương thức 75 để hợp nhất mảng 24 với mảng 77, để tạo ra một mảng 78 mới. Lưu ý rằng 24 và 77 vẫn không thay đổi. 9Sao chép một mảngVí dụ này cho thấy ba cách để tạo một mảng mới từ mảng 24 hiện có: đầu tiên bằng cách sử dụng cú pháp lan truyền, sau đó bằng cách sử dụng phương thức 82, sau đó bằng cách sử dụng phương thức 83. 0Tất cả các hoạt động sao chép mảng tích hợp (cú pháp lan truyền, 8, 07 và 9) tạo ra các bản sao nông. Thay vào đó, nếu bạn muốn có một bản sao sâu của một mảng, bạn có thể sử dụng 87 để chuyển đổi mảng thành chuỗi JSON và sau đó 88 để chuyển đổi chuỗi trở lại thành một mảng mới hoàn toàn độc lập với mảng gốc. 1Bạn cũng có thể tạo các bản sao sâu bằng phương pháp 89, có lợi thế cho phép các đối tượng có thể chuyển được trong nguồn được chuyển sang bản sao mới, thay vì chỉ nhân bản.Cuối cùng, điều quan trọng là phải hiểu rằng việc gán một mảng hiện có cho một biến mới không tạo ra một bản sao của mảng hoặc các phần tử của nó. Thay vào đó, biến mới chỉ là một tham chiếu, hoặc bí danh, cho mảng gốc; Đó là, tên của mảng gốc và tên biến mới chỉ là hai tên cho cùng một đối tượng (và do đó sẽ luôn đánh giá là tương đương nghiêm ngặt). Do đó, nếu bạn thực hiện bất kỳ thay đổi nào theo giá trị của mảng gốc hoặc với giá trị của biến mới, thì cũng sẽ thay đổi: 2Nhóm các yếu tố của một mảngCác phương thức 8 có thể được sử dụng để nhóm các phần tử của một mảng, sử dụng hàm thử nghiệm trả về một chuỗi biểu thị nhóm của phần tử hiện tại.Ở đây chúng tôi có một mảng hàng tồn kho đơn giản có chứa các đối tượng "thực phẩm" có 91 và 92. 3Để sử dụng 93, bạn cung cấp chức năng gọi lại được gọi với phần tử hiện tại và tùy chọn chỉ mục và mảng hiện tại và trả về một chuỗi chỉ ra nhóm của phần tử.Mã bên dưới sử dụng hàm mũi tên để trả về 92 của mỗi phần tử mảng (điều này sử dụng cú pháp phá hủy đối tượng cho các đối số chức năng để giải nén phần tử 92 khỏi đối tượng được truyền). Kết quả là một đối tượng có các thuộc tính được đặt tên theo các chuỗi duy nhất được trả về bởi cuộc gọi lại. Mỗi thuộc tính được gán một mảng chứa các phần tử trong nhóm. 4Lưu ý rằng đối tượng được trả về tham chiếu các phần tử giống như mảng gốc (không phải bản sao sâu). Thay đổi cấu trúc bên trong của các yếu tố này sẽ được phản ánh trong cả mảng gốc và đối tượng được trả về. Ví dụ, nếu bạn không thể sử dụng chuỗi làm khóa làm khóa, nếu thông tin đến nhóm được liên kết với một đối tượng có thể thay đổi, thì thay vào đó bạn có thể sử dụng 9. Điều này rất giống với 97 ngoại trừ việc nó nhóm các phần tử của mảng thành 0 có thể sử dụng giá trị tùy ý (đối tượng hoặc nguyên thủy) làm chìa khóa.Những ví dụ khácTạo một mảng hai chiềuSau đây tạo ra một bàn cờ như một chuỗi hai chiều. Động thái đầu tiên được thực hiện bằng cách sao chép 99 trong 00 sang 01. Vị trí cũ tại 02 được làm trống. 5Đây là đầu ra: 6Sử dụng một mảng để lập bảng một tập hợp các giá trị 7Kết quả trong 8Tạo một mảng bằng kết quả của một trận đấuKết quả của một trận đấu giữa 03 và một chuỗi có thể tạo ra một mảng JavaScript có các thuộc tính và phần tử cung cấp thông tin về trận đấu. Một mảng như vậy được trả lại bởi 04 và 05.Ví dụ: 9Để biết thêm thông tin về kết quả của một trận đấu, hãy xem trang 04 và 05.Ghi chú 9 Các đối tượng không thể sử dụng các chuỗi tùy ý làm chỉ số phần tử (như trong một mảng kết hợp) nhưng phải sử dụng các số nguyên không âm (hoặc dạng chuỗi tương ứng của chúng). Cài đặt hoặc truy cập thông qua những người không phải là thông tin sẽ không đặt hoặc truy xuất một phần tử từ chính danh sách mảng, nhưng sẽ đặt hoặc truy cập một biến được liên kết với bộ sưu tập thuộc tính đối tượng của mảng đó. Các thuộc tính đối tượng của mảng và danh sách các phần tử mảng là riêng biệt và các hoạt động di chuyển và đột biến của mảng không thể được áp dụng cho các thuộc tính được đặt tên này.Các phần tử mảng là các thuộc tính đối tượng theo cùng một cách mà 09 là một thuộc tính (tuy nhiên, cụ thể, 10 là một phương thức). Tuy nhiên, cố gắng truy cập một phần tử của một mảng như sau đã ném lỗi cú pháp vì tên thuộc tính không hợp lệ: 0Cú pháp JavaScript yêu cầu các thuộc tính bắt đầu bằng một chữ số được truy cập bằng ký hiệu khung thay vì ký hiệu DOT. Cũng có thể trích dẫn các chỉ số mảng (ví dụ: 11 thay vì 12), mặc dù thường không cần thiết. 13 trong 12 được ép thành một chuỗi bởi công cụ JavaScript thông qua chuyển đổi 09 ngầm. Do đó, 16 và 17 sẽ đề cập đến hai vị trí khác nhau trên đối tượng 18 và ví dụ sau đây có thể là 1: 1Chỉ 11 là một chỉ số mảng thực tế. 21 là một thuộc tính chuỗi tùy ý sẽ không được truy cập trong vòng lặp mảng.Mối quan hệ giữa độ dài và tính chất sốThuộc tính 2 của mảng JavaScript được kết nối.Một số phương thức mảng tích hợp (ví dụ: 23, 83, 26, v.v.) có tính đến giá trị của thuộc tính 2 của mảng khi chúng được gọi.Các phương thức khác (ví dụ: 35, 40, v.v.) cũng dẫn đến các bản cập nhật cho thuộc tính 2 của mảng. 2Khi đặt thuộc tính trên mảng JavaScript khi thuộc tính là chỉ mục mảng hợp lệ và chỉ mục đó nằm ngoài giới hạn hiện tại của mảng, động cơ sẽ cập nhật thuộc tính 2 của mảng cho phù hợp: 3Tăng 2.
4Giảm thuộc tính 2, tuy nhiên, xóa các yếu tố. 5Điều này được giải thích thêm trên trang 33.Phương pháp mảng và các khe trốngCác khe trống trong các mảng thưa thớt cư xử không nhất quán giữa các phương thức mảng. Nói chung, các phương pháp cũ hơn sẽ bỏ qua các khe trống, trong khi các phương pháp mới hơn coi chúng là 5.Trong số các phương pháp lặp qua nhiều yếu tố, sau đây thực hiện kiểm tra 35 trước khi truy cập chỉ mục và không kết hợp các khe trống với 5:
Để biết chính xác cách họ xử lý các khe trống, hãy xem trang cho mỗi phương thức. Các phương pháp này xử lý các khe trống như thể chúng là 5:
Sao chép phương pháp và phương pháp đột biếnMột số phương thức không làm thay đổi mảng hiện tại mà phương thức đã được gọi, mà thay vào đó lại trả về một mảng mới. Họ làm như vậy bằng cách trước tiên truy cập 68 để xác định hàm tạo để sử dụng cho mảng mới. Mảng mới được xây dựng sau đó được điền với các yếu tố. Bản sao luôn xảy ra nông cạn - phương thức không bao giờ sao chép bất cứ thứ gì ngoài mảng được tạo ban đầu. Các phần tử của (các) mảng gốc được sao chép vào mảng mới như sau:
Các phương thức khác làm biến đổi mảng mà phương thức được gọi, trong trường hợp giá trị trả về của chúng khác nhau tùy thuộc vào phương thức: đôi khi một tham chiếu đến cùng một mảng, đôi khi độ dài của mảng mới. Các phương thức sau tạo các mảng mới với 72:
Lưu ý rằng 93 và 62 không sử dụng 72 để tạo các mảng mới cho mỗi mục nhập nhóm, nhưng luôn sử dụng hàm tạo 9 trơn. Về mặt khái niệm, họ cũng không sao chép các phương pháp.Các phương pháp sau đây làm biến đổi mảng ban đầu:
Phương pháp mảng chungCác phương thức mảng luôn chung chung - chúng không truy cập bất kỳ dữ liệu nội bộ nào của đối tượng mảng. Họ chỉ truy cập các phần tử mảng thông qua thuộc tính 2 và các phần tử được lập chỉ mục. Điều này có nghĩa là chúng cũng có thể được gọi trên các đối tượng giống như mảng. 6Bình thường hóa thuộc tính chiều dàiThuộc tính 2 được chuyển đổi thành một số, bị cắt thành một số nguyên và sau đó được kẹp theo phạm vi từ 0 đến 253 - 1. 95 trở thành 0, vì vậy ngay cả khi 2 không có mặt hoặc là 5, nó hoạt động như thể nó có giá trị ____5050 . 7
Một số phương thức mảng đặt thuộc tính 2 của đối tượng mảng. Họ luôn đặt giá trị sau khi chuẩn hóa, do đó 2 luôn kết thúc như một số nguyên. 8Các đối tượng giống như mảngThuật ngữ đối tượng giống như mảng đề cập đến bất kỳ đối tượng nào không ném trong quá trình chuyển đổi 2 được mô tả ở trên. Trong thực tế, đối tượng như vậy dự kiến sẽ thực sự có thuộc tính 2 và có các phần tử được lập chỉ mục trong phạm vi 0 đến 05. (Nếu nó không có tất cả các chỉ số, nó sẽ tương đương về mặt chức năng với một mảng thưa thớt.)Nhiều đối tượng DOM giống như mảng-ví dụ: 06 và 07. Đối tượng 08 cũng giống như mảng. Bạn có thể gọi các phương thức mảng trên chúng ngay cả khi chúng không có các phương thức này. 9Thông số kỹ thuật
Tính tương thích của trình duyệt webBảng BCD chỉ tải trong trình duyệt Xem thêmBạn có thể đặt một chức năng bên trong một mảng javascript không?Câu trả lời đơn giản là có bạn có thể đặt chức năng trong một mảng. Trong thực tế, có thể khai báo các biến và tham chiếu chúng trong chức năng của bạn.yes you can place function in an array. In fact, can declare variables and reference them in your function.
Bạn có thể gọi một chức năng trong một mảng không?Điều quan trọng cần nhớ là khi một mảng được sử dụng làm đối số hàm, địa chỉ của nó được chuyển đến một hàm.Điều này có nghĩa là mã bên trong hàm sẽ hoạt động và có khả năng thay đổi nội dung thực tế của mảng được sử dụng để gọi hàm.when an array is used as a function argument, its address is passed to a function. This means that the code inside the function will be operating on, and potentially altering, the actual content of the array used to call the function.
Làm thế nào để bạn cung cấp cho một mảng một chức năng trong JavaScript?Phương pháp 1: Sử dụng phương thức application (): Phương thức application () được sử dụng để gọi 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 một cuộc gọi đến hàm và mảng đối số chứa mảng các đối số sẽ được truyền.Using the apply() method: The apply() method is used to call a function with the given arguments as an array or array-like object. It contains two parameters. The this value provides a call to the function and the arguments array contains the array of arguments to be passed.
Làm thế nào để bạn viết một chức năng trong một mảng?Để chuyển toàn bộ một mảng cho một hàm, chỉ tên của mảng được truyền như một đối số.kết quả = tính toán (num);Tuy nhiên, lưu ý việc sử dụng [] trong định nghĩa chức năng.Điều này thông báo cho trình biên dịch rằng bạn đang chuyển một mảng một chiều cho hàm.only the name of the array is passed as an argument. result = calculateSum(num); However, notice the use of [] in the function definition. This informs the compiler that you are passing a one-dimensional array to the function. |