آرایه دو بعدی در جاوا اسکریپت. آرایه ها در جاوا اسکریپت آرایه های چند بعدی در نمونه های جاوا اسکریپت

در مقاله قبلی در مورد چیستی و نحوه کار با آن صحبت کردیم. در این مقاله در مورد آن صحبت خواهیم کرد آرایه چند بعدی.

آرایه ای است که دارای یک یا چند عنصر است که آنها نیز آرایه هستند. بسته به عمق اعلامیه، به ویژه، ممکن است نامیده شود آرایه دو بعدی(2 سطح) یا آرایه سه بعدی(3 سطح) یا چهار بعدی(4 سطح) و غیره.

محبوب ترین، پس از آرایه یک بعدی، رایج ترین مورد استفاده، آرایه دو بعدی است. او است، ما با جزئیات بیشتری مطالعه خواهیم کرد.


همانطور که می بینید، عناصر یک آرایه دو بعدی، آرایه های یک بعدی هستند. اگر این آرایه های یک بعدی حاوی آرایه های بیشتری باشد، آرایه آرایه از قبل سه بعدی خواهد بود.

به عنوان مثال، بیایید سه آرایه ساده ایجاد کنیم و آنها را با داده پر کنیم. اولی را با اعداد زوج، دومی را با اعداد فرد و سومی را با مقداری داده دلخواه پر می کنیم.

//اعلان سه آرایه خالی var evenNumbers = new Array(); //متغیر k - برای شاخص های آرایه evenNumbers var k = 0; var oddNumbers = new Array(); //متغیر n - برای شاخص های آرایه oddNumbers var n = 0; var data = new Array("car", "plane", true, 89, "m"); // آرایه evenNumbers را با اعداد زوج پر کنید (var i = 1; i

برای اینکه ببینید چه چیزی داخل آرایه است، می توانید از ابزاری مانند کنسول.

به عنوان مثال، می خواهیم محتویات یک آرایه را با اعداد فرد oddNumbers ببینیم. برای این کار خط زیر را در کد زیر بنویسید:

Console.log(oddNumbers);

برای دیدن نتیجه، باید باز کنید کنسول در مرورگر. که در گوگل کروماین کار به این صورت انجام می شود: دکمه سمت راست ماوس را در صفحه فشار می دهیم و از منوی زمینهآخرین گزینه "مشاهده کد"، یعنی بازرس را انتخاب کنید. که در نسخه انگلیسی، این گزینه Inspect نام دارد.


و در زیر نوار ابزار توسعه دهنده ظاهر می شود. در آن، باید به تب Console بروید.


در حال حاضر به منظور یک آرایه دو بعدی ایجاد کنید، باید آن را اعلام کنید و آرایه های یک بعدی که در بالا ایجاد کردید را به آن اضافه کنید.

//یک آرایه TwoDimens را اعلام کرده و آن را در var twoDimens = new Array(EnNumbers, oddNumbers, data); ورود به سیستم کنسول (twoDimens);

بیایید به محتویات این آرایه در کنسول نگاه کنیم.


شمارش آرایه دو بعدی

برای شروع، بیایید یاد بگیریم نحوه دسترسی به عناصر یک آرایه دو بعدی.

همانند آرایه‌های منفرد، عناصر با نمایه‌هایشان قابل دسترسی هستند.

به عنوان مثال، اجازه دهید عنصر را در نمایه 3 از یک آرایه با اعداد فرد (oddNumbers) نمایش دهیم. شاخص آرایه یک بعدی oddNumbers در آرایه دو بعدی twoDimens برابر با یک (1) است.

Document.write("عنصر نمایه 3 از آرایه oddNumbers است: " + twoDimens); // مورد: 7

در آرایه TwoDimens، ما به عنصری در شاخص 1 دسترسی داریم. عنصر زیر آن شاخص، آرایه oddNumbers است. و در این آرایه، ما در حال حاضر به عنصر در شاخص 3، که عدد 7 است، دسترسی داریم.

حالا بریم سر سوال نحوه تکرار روی آرایه دو بعدی.

تکرار روی یک آرایه دو بعدی با استفاده از یک حلقه دوتایی انجام می شود. برای مثال، بیایید روی آرایه TwoDimens خود تکرار کنیم.

برای(var i = 0; i< twoDimens.length; i++){ for(var j = 0; j < twoDimens[i].length; j++){ document.write("

عنصر در شاخص " + i + " " + j + "برابر است با: " + twoDimens[i][j] +"

"); } }

در حلقه اول، روی خود آرایه twoDimens تکرار می کنیم. در حلقه دوم، ما در حال تکرار روی خود عنصر (آرایه) هستیم. ابتدا متغیر i برابر با 0 است. بنابراین در حلقه دوم ابتدا روی آرایه evenNumbers اول که اندیس 0 دارد تکرار می کنیم و از قبل در حلقه دوم به عناصر این آرایه دسترسی پیدا می کنیم. بدین ترتیب: twoDimens[j]. جایی که j از 0 به طول آرایه زوج Numbers می رود.

پس از تکرار از طریق عناصر آرایه اول، به حلقه اول برمی گردیم، متغیر i را افزایش می دهیم و به تکرار روی آرایه oddNumbers دوم که دارای شاخص 1 است، ادامه می دهیم. بنابراین، هر عنصر از آرایه دو بعدی TwoDimens برابر است با تکرار شده

حال به نتیجه این شمارش نگاه می کنیم:


این تمام چیزی است که می خواستم در این مقاله در مورد آن صحبت کنم. اکنون می دانید که چگونه یک آرایه دو بعدی ایجاد کنید، چگونه به عناصر یک آرایه دو بعدی دسترسی پیدا کنید، و چگونه روی یک آرایه دو بعدی تکرار کنید. امیدوارم همه چیز واضح بوده باشد. موفقیت های بزرگی را برای شما آرزومندم!

آرایه ها

آرایهمجموعه ای منظم از ارزش ها است. مقادیر موجود در یک آرایه عناصر نامیده می شوند و هر عنصر با یک موقعیت عددی در آرایه مشخص می شود که به آن شاخص می گویند. آرایه ها در جاوا اسکریپت بدون تایپ هستند: عناصر آرایه می توانند از هر نوع باشند و عناصر مختلف یک آرایه می توانند انواع مختلفی داشته باشند. عناصر آرایه حتی می توانند اشیاء یا آرایه های دیگر باشند که به شما امکان می دهد ساختارهای داده پیچیده ای مانند آرایه های اشیاء و آرایه های آرایه ایجاد کنید.

شاخص‌های آرایه جاوا اسکریپت مبتنی بر صفر هستند و از اعداد صحیح 32 بیتی استفاده می‌کنند - اولین عنصر یک آرایه دارای شاخص 0 است. آرایه‌ها در جاوا اسکریپت پویا هستند: می‌توانند در صورت نیاز رشد کرده و کوچک شوند. نیازی به اعلام اندازه ثابت آرایه ها در هنگام ایجاد آنها یا تخصیص مجدد حافظه در صورت تغییر اندازه آنها وجود ندارد.

آرایه‌ها در جاوا اسکریپت شکلی تخصصی از اشیا هستند و شاخص‌های آرایه به معنای کمی بیشتر از نام ویژگی‌ها هستند که به طور تصادفی اعداد صحیح هستند.

ایجاد آرایه ها

ساده ترین راه برای ایجاد یک آرایه استفاده از Literal است که یک لیست ساده از عناصر آرایه جدا شده با کاما در پرانتز مربع است. مقادیر در یک آرایه لفظی نباید ثابت باشند - آنها می توانند هر عبارتی باشند، از جمله لفظ شی:

var خالی = ; // خالی آرایه var numbers = ; // آرایه ای با پنج عنصر عددی var misc = [ 1.1, true, "a", ]; // 3 عنصر انواع متفاوت+ کاما انتهایی var base = 1024; جدول var = ; // آرایه با متغیرها var arrObj = [, ]; // 2 آرایه در داخل حاوی اشیاء

نحو لغوی آرایه اجازه می دهد تا یک کاما انتهایی اختیاری، یعنی. [،] تحت اللفظی آرایه ای را با دو عنصر، نه سه عنصر، مطابقت می دهد.

راه دیگر برای ایجاد آرایه فراخوانی سازنده است آرایه(). شما می توانید یک سازنده را به سه روش مختلف فراخوانی کنید:

    سازنده فراخوانی بدون آرگومان:

    Var arr = New Array();

    در این صورت یک آرایه خالی معادل یک literal ایجاد می شود.

    سازنده را با یک آرگومان عددی واحد که طول آرایه را مشخص می کند فراخوانی کنید:

    Var arr = آرایه جدید (10);

    در این صورت یک آرایه خالی با طول مشخص شده ایجاد می شود. اگر تعداد عناصر آرایه از قبل مشخص باشد، می‌توان از این شکل فراخوانی سازنده Array() برای پیش‌تخصیص حافظه برای یک آرایه استفاده کرد. توجه داشته باشید که این هیچ مقداری را در آرایه ذخیره نمی کند.

    به صراحت در فراخوانی سازنده مقادیر دو یا چند عنصر اول آرایه یا یک عنصر غیر عددی را مشخص کنید:

    Var arr = آرایه جدید (5، 4، 3، 2، 1، "تست");

    در این مورد، آرگومان های سازنده به مقادیر عناصر آرایه جدید تبدیل می شوند. استفاده از حروف الفبای آرایه تقریباً همیشه ساده تر از استفاده از سازنده Array() به این شکل است.

خواندن و نوشتن عناصر آرایه

عناصر آرایه با استفاده از . در سمت چپ براکت ها باید یک مرجع آرایه باشد. در داخل براکت ها باید یک عبارت دلخواه وجود داشته باشد که یک عدد صحیح غیر منفی را برمی گرداند. این نحو برای خواندن و نوشتن مقدار یک عنصر آرایه مناسب است. بنابراین، تمام عبارات جاوا اسکریپت زیر معتبر هستند:

// ایجاد یک آرایه با یک عنصر var arr = ["world"]; // خواندن عنصر 0 var value = arr; // مقدار عنصر 1 را بنویسید arr = 3.14; // مقدار عنصر 2 را بنویسید i = 2; arr[i] = 3; // مقدار عنصر 3 را بنویسید arr = "hello"; // عناصر 0 و 2 را بخوانید، مقدار را در عنصر 3 بنویسید arr] = arr;

اجازه دهید به شما یادآوری کنم که آرایه ها یک نوع تخصصی از اشیاء هستند. براکت‌های مربعی که برای دسترسی به عناصر آرایه استفاده می‌شوند، دقیقاً مانند براکت‌های مربعی مورد استفاده برای دسترسی به ویژگی‌های شی عمل می‌کنند. مفسر جاوا اسکریپت شاخص های عددی پرانتز شده را به رشته ها تبدیل می کند - شاخص 1 تبدیل به رشته "1" می شود - و سپس از رشته ها به عنوان نام ویژگی استفاده می کند.

هیچ چیز خاصی در مورد تبدیل شاخص های عددی به رشته وجود ندارد: همین کار را می توان با اشیاء معمولی انجام داد:

var obj = (); // ایجاد یک شی ساده obj = "one"; // آن را با اعداد صحیح نمایه کنید

ویژگی آرایه ها این است که هنگام استفاده از نام ویژگی هایی که اعداد صحیح غیر منفی هستند، آرایه ها به طور خودکار مقدار ویژگی را تعیین می کنند. طول. به عنوان مثال، آرایه آرایه در بالا با یک عنصر ایجاد شده است. سپس مقادیری را به عناصر خود در اندیس های 1، 2 و 3 اختصاص داد. در نتیجه این عملیات، مقدار ویژگی length آرایه به 4 تغییر کرد.

شما باید به وضوح بین شاخص های آرایه و نام ویژگی های شی تمایز قائل شوید. همه ایندکس‌ها نام ویژگی‌ها هستند، اما فقط ویژگی‌هایی که نام‌هایی با اعداد صحیح نشان داده می‌شوند، اندیس هستند. همه آرایه ها شی هستند و شما می توانید با هر نامی به آنها خاصیت اضافه کنید. با این حال، اگر ویژگی‌هایی را لمس کنید که شاخص‌های آرایه هستند، آرایه‌ها با به‌روزرسانی مقدار ویژگی length در صورت لزوم پاسخ می‌دهند.

لطفا توجه داشته باشید که استفاده از اعداد منفی و غیر صحیح به عنوان شاخص آرایه مجاز است. در این حالت اعداد به رشته هایی تبدیل می شوند که به عنوان نام ویژگی ها استفاده می شوند.

افزودن و حذف عناصر آرایه

قبلاً دیده‌ایم که ساده‌ترین راه برای افزودن عناصر به آرایه، تخصیص مقادیر به شاخص‌های جدید است. همچنین می توانید از روش برای اضافه کردن یک یا چند عنصر به انتهای یک آرایه استفاده کنید. فشار دادن():

Var arr = ; // ایجاد یک آرایه خالی arr.push("zero"); // اضافه کردن مقدار به end arr.push("one",2); // دو مقدار دیگر اضافه کنید

همچنین می توانید با اختصاص یک مقدار به عنصر arr، یک عنصر به انتهای یک آرایه اضافه کنید. برای درج یک عنصر در ابتدای یک آرایه، می توانید از روش استفاده کنید unshift()، که عناصر موجود در آرایه را به موقعیت های شاخص بالاتر منتقل می کند.

عناصر آرایه را می توان با استفاده از عملگر delete حذف کرد، درست مانند ویژگی های شی معمولی:

Var arr = ; حذف arr 2 در arr; // false، آرایه شاخص 2 تعریف نشده است arr.length. // 3: عملگر delete ویژگی length آرایه را تغییر نمی دهد

حذف یک عنصر مشابه (اما کمی متفاوت) با اختصاص تعریف نشده به آن عنصر است. توجه داشته باشید که اعمال عملگر حذف بر روی یک عنصر از یک آرایه، مقدار ویژگی length را تغییر نمی‌دهد، و همچنین عناصر با شاخص‌های بالاتر را به سمت پایین حرکت نمی‌دهد تا فضای خالی عنصر در حال حذف را پر کند.

همچنین حذف عناصر در انتهای یک آرایه به سادگی با اختصاص یک مقدار جدید به ویژگی length امکان پذیر است. آرایه ها روشی دارند ترکیدن()(برعکس push())، که طول آرایه را 1 کاهش می دهد و مقدار عنصر حذف شده را برمی گرداند. یک روش هم وجود دارد تغییر مکان()(برعکس متد unshift())، که عنصر ابتدای آرایه را حذف می کند. بر خلاف عملگر حذف، متد ()shift همه عناصر را به موقعیتی پایین‌تر از شاخص‌های فعلی تغییر می‌دهد.

در نهایت یک روش چند منظوره وجود دارد splice()، که به شما امکان می دهد عناصر آرایه ها را درج، حذف و جایگزین کنید. مقدار ویژگی length را تغییر می‌دهد و عناصر آرایه را در صورت نیاز با شاخص‌های پایین‌تر یا بالاتر تغییر می‌دهد. در مورد همه این روش ها کمی بعد صحبت خواهیم کرد.

آرایه های چند بعدی

جاوا اسکریپت از "واقعی" پشتیبانی نمی کند آرایه های چند بعدی، اما به شما امکان می دهد با استفاده از آرایه های آرایه ها آنها را به خوبی شبیه سازی کنید. برای دسترسی به یک عنصر داده در آرایه ای از آرایه ها، کافی است دو بار از عملگر استفاده کنید.

به عنوان مثال، فرض کنید ماتریس متغیر آرایه ای از آرایه های اعداد است. هر عنصر ماتریس [x] آرایه ای از اعداد است. برای دسترسی به یک عدد خاص در یک آرایه، می توانید از عبارت ماتریس[x][y] استفاده کنید. زیر است مثال خاص، جایی که یک آرایه دو بعدی به عنوان جدول ضرب استفاده می شود:

// ایجاد یک آرایه چند بعدی var table = new Array(10); // 10 ردیف در جدول برای (var i = 0; i

روش های کلاس آرایه

استاندارد ECMAScript 3 تعدادی توابع راحت را برای کار با آرایه ها به عنوان بخشی از Array.prototype تعریف می کند که به عنوان روش های هر آرایه در دسترس هستند. این روش ها در زیر بخش های زیر ارائه خواهند شد.

متد join().

متد Array.join() تمام عناصر آرایه را به رشته تبدیل می کند، آنها را به هم متصل می کند و رشته حاصل را برمی گرداند. به عنوان یک آرگومان اختیاری برای متد، می توانید رشته ای را ارسال کنید که برای جداسازی عناصر در رشته نتیجه استفاده می شود. اگر رشته جداکننده مشخص نشده باشد، از کاما استفاده می شود. به عنوان مثال، قطعه زیر منجر به رشته "1،2،3" می شود:

Var arr = ; arr.join(); // "1،2،3" arr.join("-"); // "1-2-3"

متد reverse().

متد Array.reverse() ترتیب عناصر یک آرایه را معکوس می کند و یک آرایه مرتب شده مجدد را برمی گرداند. جایگشت مستقیماً روی آرایه اصلی انجام می شود، یعنی. این روش یک آرایه جدید با عناصر مرتب شده مجدد ایجاد نمی کند، بلکه آنها را در یک آرایه از قبل موجود مرتب می کند. به عنوان مثال، قطعه زیر که از متدهای reverse() و join() استفاده می کند، منجر به رشته "3،2،1" می شود:

Var arr = ; arr.reverse().join(); // "3،2،1"

متد sort().

متد ()Array.sort عناصر موجود در آرایه اصلی را مرتب می کند و آرایه مرتب شده را برمی گرداند. اگر متد sort() بدون آرگومان فراخوانی شود، مرتب‌سازی به ترتیب حروف الفبا انجام می‌شود (در صورت لزوم، عناصر به‌طور موقت برای مقایسه به رشته‌ها تبدیل می‌شوند). عناصر تعریف نشده به انتهای آرایه منتقل می شوند.

برای مرتب سازی به ترتیبی غیر از حروف الفبا، می توانید یک تابع مقایسه را به عنوان آرگومان به متد sort() ارسال کنید. این تابع تعیین می کند که کدام یک از دو آرگومان آن باید در لیست مرتب شده اول باشد. اگر آرگومان اول باید قبل از آرگومان دوم بیاید، تابع مقایسه باید یک عدد منفی برگرداند. اگر قرار است آرگومان اول در آرایه مرتب شده از آرگومان دوم پیروی کند، آنگاه تابع باید عددی بزرگتر از صفر را برگرداند. و اگر دو مقدار معادل هستند (یعنی ترتیب آنها مهم نیست)، تابع مقایسه باید 0 را برگرداند:

Var arr = ; arr.sort(); // ترتیب حروف الفبا: 1111, 222, 33, 4 arr.sort(function(a,b) ( // ترتیب عددی: 4, 33, 222, 1111 return a-b; // مقدار 0 // بسته به ترتیب مرتب سازی a را برمی گرداند و ب))؛ // مرتب سازی به عقب، از بزرگترین به کوچکترین arr.sort(function(a,b) (return b-a));

توجه کنید که استفاده از یک تابع بدون نام در این قطعه چقدر راحت است. تابع مقایسه فقط در اینجا استفاده می شود، بنابراین نیازی به ذکر نام نیست.

متد concate().

متد Array.concat یک آرایه جدید حاوی عناصر آرایه اصلی که متد concat() بر روی آن فراخوانی شده و مقادیر هر آرگومان به متد ()concat ارسال می‌شود، ایجاد و برمی‌گرداند. اگر هر یک از این آرگومان ها خودش یک آرایه باشد، عناصر آن به آرایه برگشتی اضافه می شوند. البته باید توجه داشت که هیچ تبدیل بازگشتی آرایه ای از آرایه ها به یک آرایه یک بعدی وجود ندارد. متد concat() آرایه اصلی را تغییر نمی دهد. در زیر چند نمونه آورده شده است:

Var arr = ; arr.concat(4، 5); // بازگشت arr.concat(); // برمی‌گرداند arr.concat(,) // برمی‌گرداند arr.concat(4, ]) // برمی‌گرداند ]

روش slice().

متد Array.slice() یک قطعه یا زیرآرایه از آرایه مشخص شده را برمی گرداند. دو آرگومان متد ابتدا و انتهای قطعه برگشتی را تعریف می کنند. آرایه برگردانده شده حاوی عنصری است که تعداد آن در آرگومان اول مشخص شده است، به علاوه تمام عناصر بعدی تا (اما نه شامل) عنصری که تعداد آن در آرگومان دوم مشخص شده است.

اگر فقط یک آرگومان داده شود، آرایه برگشتی شامل تمام عناصر از موقعیت شروع تا انتهای آرایه است. اگر هر یک از آرگومان ها منفی باشد، عدد عنصر را نسبت به انتهای آرایه مشخص می کند. بنابراین، آرگومان -1 مربوط به آخرین عنصر آرایه است و آرگومان -3 مربوط به عنصر سوم آرایه از انتهای آن است. در اینجا چند نمونه آورده شده است:

Var arr = ; arr slice(0,3); // arr.slice(3) را برمی گرداند. // arr.slice(1,-1) را برمی گرداند. // arr.slice(-3,-2) را برمی گرداند. // برگشت

متد splice().

متد Array.splice() یک روش عمومی است که عناصر یک آرایه را درج یا حذف می کند. برخلاف متدهای slice() و concat()، متد splice() آرایه اصلی را که بر روی آن فراخوانی شده بود تغییر می دهد. توجه داشته باشید که متدهای splice() و slice() نام های بسیار مشابهی دارند اما عملیات کاملا متفاوتی را انجام می دهند.

متد splice() می تواند عناصر را از یک آرایه حذف کند، عناصر جدید را وارد کند یا هر دو را همزمان انجام دهد. عناصر آرایه در صورت لزوم جابه جا می شوند تا پس از درج یا حذف، دنباله ای به هم پیوسته تشکیل شود.

اولین آرگومان متد splice() موقعیتی را در آرایه ای که درج و/یا حذف از آن انجام می شود مشخص می کند. آرگومان دوم تعداد عناصر حذف (برش) از آرایه را مشخص می کند. اگر آرگومان دوم حذف شود، تمام عناصر آرایه از آرایه مشخص شده تا انتهای آرایه حذف می شوند. متد splice() آرایه ای از عناصر حذف شده یا (اگر هیچ عنصری حذف نشده باشد) یک آرایه خالی را برمی گرداند.

دو آرگومان اول متد splice() عناصر آرایه ای که باید حذف شوند را تعیین می کند. این آرگومان‌ها را می‌توان با هر تعداد آرگومان اختیاری دنبال کرد که عناصری را که باید در آرایه درج شوند، از موقعیت مشخص‌شده در آرگومان اول شروع می‌کنند.

Var arr = ; arr.splice(4); // بازگشت، arr = arr.splice(1,2); // بازگشت، arr = arr.splice(1,1); // برمی‌گرداند؛ arr = arr = ; arr.splice(2,0"a","b"); // برمی‌گرداند؛ arr=

متدهای push() و pop().

متدهای push() و pop() به آرایه ها اجازه می دهند مانند پشته ها رفتار شوند. متد push() یک یا چند عنصر جدید را به انتهای آرایه اضافه می کند و طول جدید آن را برمی گرداند. متد pop() عملیات معکوس را انجام می دهد - آخرین عنصر آرایه را حذف می کند، طول آرایه را کاهش می دهد و مقدار حذف شده را برمی گرداند. توجه داشته باشید که هر دوی این روش ها آرایه اصلی را اصلاح می کنند، نه اینکه یک کپی اصلاح شده از آن ایجاد کنند.

متدهای unshift() و shift().

متدهای unshift() و shift() بسیار شبیه به push() و pop() عمل می کنند، با این تفاوت که عناصر را در ابتدای آرایه وارد کرده و حذف می کنند، نه در انتهای آن. متد ()unshift عناصر موجود را به سمت شاخص‌های بالاتر تغییر می‌دهد تا فضا آزاد شود، عنصر یا عناصر را به ابتدای آرایه اضافه می‌کند و طول جدید آرایه را برمی‌گرداند. متد ()shift اولین عنصر آرایه را حذف و برمی گرداند، و تمام عناصر بعدی را یک موقعیت به پایین جابجا می کند تا فضای خالی در ابتدای آرایه پر شود.

در این مقاله، آرایه‌های استاندارد جاوا اسکریپت را با شاخص‌های عددی بررسی می‌کنیم. آرایه ها با استفاده از پرانتز اعلام می شوند:

var fruits = ["سیب"، "پرتقال"، "خر"]

برای استخراج یک عنصر، شاخص آن را در پرانتز قرار دهید. اولین شاخص 0:

var fruits = ["سیب"، "پرتقال"، "خر"] هشدار(میوه ها) هشدار(میوه ها) هشدار(میوه ها)

همچنین می توانیم طول یک آرایه جاوا اسکریپت را بدست آوریم:

var fruits = ["سیب"، "پرتقال"، "خر"] هشدار(fruits.length)

اوه! ما آرایه ای با دو میوه و یک الاغ ایجاد کرده ایم. حالا باید خر را برداریم.

روش های پاپ و فشار

متد pop در جاوا اسکریپت یک عنصر آرایه را حذف کرده و آن را برمی گرداند.

مثال زیر نشان می دهد که چگونه "Donkey" از یک آرایه بازیابی می شود:

var fruits = ["Apple", "Orange", "Donkey"] alert("I'm deleting "+fruits.pop()) // اکنون فقط هشدار ["Apple","Orange"] را داریم("Now اندازه آرایه: "+fruits.length) // خر حذف شد

توجه داشته باشید که pop خود آرایه را تغییر می دهد.

همتای Pop روش فشاری است که یک عنصر را به آرایه اضافه می کند. به عنوان مثال، ما فراموش کردیم یک هلو اضافه کنیم:

var fruits = ["سیب"، "پرتقال"] fruits.push("هلو"); // اکنون ما هشدار ["سیب"، "نارنجی"، "هلو"] داریم ("آخرین مورد:" + میوه ها)

  1. ایجاد یک سبک آرایه با عناصر " جاز”, “بلوز”;
  2. افزودن ارزش " راک اند رول«;
  3. مقدار دوم را از انتها با مقدار " جایگزین کنید کلاسیک". شما باید با یک آرایه خاتمه دهید: جاز”, ”کلاسیک”, ”راک اند رول". کد باید برای هر طول آرایه ای کار کند.
  4. آخرین مقدار را از آرایه استخراج کرده و از طریق هشدار نمایش دهید.

راه حل

// 1 var styles = ["Jazz", "Bluez"] // 2 styles.push("Rock"n"Roll") // or: styles = "Rock"n"Roll" // 3 styles = "Classic" " // 4 هشدار(styles.pop())

روش‌های شیفت/لغو تغییر

روش‌های shift/unshift از انتهای آرایه کار می‌کنند، اما می‌توانید از shift برای انتقال عناصر به بالا نیز استفاده کنید ( اولین مقدار آرایه با تغییر عنصر حذف می شود). متد unshift به جاوا اسکریپت اجازه می دهد تا یک عنصر را از انتها به آرایه اضافه کند:

var fruits = ["سیب"، "پرتقال"] var apple = fruits.shift() // اکنون فقط ["نارنجی"] fruits.unshift("لیمو") // اکنون ["لیمو"، " نارنجی"] هشدار(میوه ها. طول) // 2

هم Shift و هم unshift می توانند روی چندین عنصر به طور همزمان کار کنند:

var fruits = ["سیب"] fruits.push("نارنجی"،"هلو") fruits.unshift("آناناس","لیمو") // آرایه اکنون به این شکل است: ["آناناس"، "لیمو"، " سیب "، "نارنجی"، "هلو"]

وظیفه برای خودشکوفایی

کدی بنویسید تا یک مقدار تصادفی از آرایه آرایه هشدار دهد:

var arr = ["آلو"، "نارنجی"، "خر"، "هویج"، "جاوا اسکریپت"]

نکته: کدی برای بدست آوردن اعداد تصادفی از حداقل به حداکثر مقدار(شامل) موارد زیر:

var rand = min + Math.floor(Math.random()*(max+1-min))

راه حل

باید استخراج کنیم عدد تصادفیاز 0 تا arr.length-1 (شامل):

var arr = ["آلو"،"پرتقال"،"خر"،"هویج"،"جاوااسکریپت"] var rand = Math.floor(Math.random()*arr.length) alert(arr)

تکرار روی یک آرایه

در جاوا اسکریپت، تکرار روی یک آرایه با یک حلقه for انجام می شود:

var fruits = ["آناناس"، "لیمو"، "سیب"، "پرتقال"، "هلو"] for(var i=0; i

وظیفه برای خودشکوفایی

یک تابع find(arr,value) ایجاد کنید که مقداری را در یک آرایه مشخص پیدا کرده و شاخص آن را برمی گرداند، یا اگر مقداری پیدا نشد -1 را برمی گرداند.

مثلا:

arr = [ "test", 2, 1.5, false ] find(arr, "test") // 0 find(arr, 2) // 1 find(arr, 1.5) // 2 find(arr, 0) // -1

راه حل

یک راه حل ممکن ممکن است به شکل زیر باشد:

تابع find(آرایه، مقدار) (برای(var i=0; i

اما این درست نیست زیرا == تفاوت بین 0 و false را تعریف نمی کند.

هنگام کار با آرایه ها در جاوا اسکریپت استفاده از === صحیح تر است. علاوه بر این، آخرین استاندارد ES5 حاوی تابع Array#indexOf است. با آن می توانیم تابعی مانند این تعریف کنیم:

تابع find(array, value) (if (array.indexOf) array.indexOf(value) for(var i=0; i)

حتی هوشمندانه تر این است که Find را از طریق یک شرط برای بررسی وجود متد indexOf تعریف کنیم.

وظیفه برای خودشکوفایی

یک تابع filterNumeric(arr) ایجاد کنید که یک آرایه را می گیرد و یک آرایه جدید که فقط حاوی مقادیر عددی از arr است را برمی گرداند.

نمونه ای از اینکه چگونه باید کار کند:

arr = ["a"، 1، "b"، 2]; arr = filterNumeric(arr); // اکنون arr =

راه حل

راه حل این است که روی آرایه تکرار کنید و مقادیر را در صورت عددی بودن به آرایه جدید اضافه کنید.

بپیوندید و تقسیم کنید

گاهی اوقات برای تبدیل آرایه جاوا اسکریپت به رشته به یک راه سریع نیاز دارید. روش join برای همین است.

با استفاده از جداکننده داده شده، یک آرایه را به یک رشته متصل می کند:

var fruits = ["لیمو"،"سیب"،"پرتقال"،"هلو"]; varstr = fruits.join(", "); هشدار(str);

تبدیل معکوس به راحتی با استفاده از روش تقسیم انجام می شود:

var fruits = "سیب، پرتقال، هلو"; vararr = fruits.split(""); // arr اکنون حاوی ["Apple", "Orange", "Peach"] alert(arr);

وظیفه برای خودشکوفایی

شی شامل ویژگی className است که شامل نام کلاس ها است که با فاصله از هم جدا شده اند:

یک تابع addClass(obj, cls) بنویسید که کلاس cls را اضافه می کند، اما فقط در صورتی که وجود نداشته باشد:

ddClass(obj، "new") // obj.className="باز کردن منوی جدید" addClass(obj, "open") // بدون تغییر (کلاس از قبل وجود دارد) addClass(obj، "من") // obj.className= " منوی باز کردن new me" alert(obj.className) //

راه حل

ما باید className و حلقه را به قطعات جدا کنیم. اگر کلاس پیدا نشد، اضافه می شود.

حلقه برای عملکرد کمی بهینه شده است:

تابع addClass(elem، cls) ( for(var c = elem.className.split(" ")، i=c.length-1; i>=0; i--) ( if (c[i] == cls ) return ) elem.className += " "+cls ) var obj = ( className: "open menu" ) addClass(obj, "new") addClass(obj, "open") alert(obj.className) // منوی باز جدید

در مثال بالا، متغیر c در ابتدای حلقه تعریف شده است و آخرین اندیس آن بر روی i تنظیم شده است.

خود حلقه در جهت مخالف پردازش می شود و با شرط i>=0 به پایان می رسد. زیرا چک i>=0 سریعتر از i است. که در جاوا اسکریپت جستجوی آرایه ها را سرعت می بخشد.

استفاده از طول برای برش آرایه

با استفاده از ویژگی length، می توانید یک آرایه را به صورت زیر برش دهید:

طول را تنظیم می کنید و مرورگر آرایه را برش می دهد.

آرایه یک شی است که دلالت دارد

در واقع، در جاوا اسکریپت، یک آرایه یک شی است که با تنظیم طول خودکار و متدهای خاص کامل می شود.

این با مفهوم در زبان های دیگر که در آن آرایه ها بخش پیوسته ای از حافظه هستند متفاوت است. این نیز با یک لیست پیوندی مبتنی بر صف یا پشته متفاوت است.

کلیدهای آرایه غیر عددی

کلیدها اعداد هستند، اما می توانند هر نامی داشته باشند:

arr = arr = 5 arr.prop = 10 // این کار را نکنید

در جاوا اسکریپت، آرایه ها جداول هش هستند، با مزایای عملکردشان، اما همچنین برخی از معایب.

به عنوان مثال، push/pop فقط بر روی خارجی ترین عناصر یک آرایه کار می کند، بنابراین آنها فوق العاده سریع هستند.

فشار فقط با انتها کار می کند:

var arr = ["My", "array"] arr.push("something") alert(arr) // string "array"

متدهای shift/unshift کند هستند زیرا نیاز به شماره گذاری مجدد کل آرایه دارند. روش اسپلایس همچنین می تواند باعث تغییر شماره گذاری شود:

بنابراین Shift/Unshift کندتر از push/pop است. هرچه آرایه بزرگتر باشد، مرتب سازی آرایه در جاوا اسکریپت بیشتر طول می کشد.

وظیفه برای خودشکوفایی

نتیجه چه خواهد شد؟ چرا؟

arr = ["a"، "b"] arr.push(function() ( alert(this) )) arr() // ?

راه حل

از آنجایی که آرایه ها اشیا هستند، arr ..در واقع یک متد فراخوانی به یک شی مانند obj است روش:

arr() // مشابه arr() // از نظر نحوی اشتباه است، اما از نظر مفهومی یکسان است: arr.2() // بازنویسی شده به همان سبک obj.method() this = arr در این مورد به تابع ارسال می شود. بنابراین محتوای arr چاپ می شود. arr = ["a", "b"] arr.push(function() ( alert(this) )) arr() // "a","b",function

آرایه های پراکنده، شرح طول

ویژگی length به شما امکان می دهد اندازه یک آرایه را در جاوا اسکریپت دریافت نکنید، بلکه آخرین شاخص + 1 را دریافت کنید. این مهم است اگر ما داریم صحبت می کنیمدر مورد آرایه های پراکنده، با "شکاف" در شاخص ها.

در مثال زیر، دو عنصر را به میوه های خالی اضافه می کنیم، اما مقدار طول 100 باقی می ماند:

var fruits = // میوه‌های آرایه خالی = میوه‌های "هلو" = هشدار "سیب"(fruits.length) // 100 (اما فقط 2 عنصر در آرایه وجود دارد)

اگر بخواهید یک آرایه پراکنده را خروجی بگیرید، مرورگر مقادیر شاخص های گمشده را به عنوان عناصر خالی برمی گرداند:

var fruits = // میوه های آرایه خالی = میوه های "هلو" = هشدار "سیب"(میوه ها) // ,هلو، سیب (یا چیزی شبیه به آن)

اما آرایه یک شی با دو کلید است. مقادیر از دست رفته فضا را اشغال نمی کنند.

آرایه های پراکنده زمانی که روش های آرایه برای آنها اعمال می شود، رفتار عجیبی دارند. آنها نمی دانند که شاخص ها گم شده اند:

var fruits = fruits = "Peach" fruits = "Apple" alert(fruits.pop()) // pop "Apple" (در index 9) alert(fruits.pop()) // پاپ یک عنصر نامشخص (در نمایه 8) )

سعی کنید از آرایه های پراکنده خودداری کنید. به هر حال، روش های آنها به طور معمول کار نمی کند. در عوض، از Object استفاده کنید.

حذف از یک آرایه

همانطور که می دانیم آرایه ها شی هستند، بنابراین می توانیم از delete برای حذف یک مقدار استفاده کنیم:

var arr = ["Go", "to", "home"] delete arr // now arr = ["Go", undefined, "home"] alert(arr) // تنظیم نشده است

می بینید که مقدار حذف شده است، اما نه به روشی که ما می خواهیم زیرا آرایه حاوی یک عنصر تنظیم نشده است.

عملگر حذف یک جفت کلید-مقدار را حذف می کند و تمام. به طور طبیعی، از آنجایی که یک آرایه فقط یک هش است، موقعیت عنصر حذف شده نامشخص می شود.

بیشتر اوقات، ما باید یک عنصر را بدون ایجاد "سوراخ" بین شاخص ها حذف کنیم. روش دیگری وجود دارد که در این مورد به ما کمک می کند.

روش اتصال

روش splice می تواند عناصر را حذف کرده و آنها را در آرایه های چند بعدی جاوا اسکریپت جایگزین کند. نحو آن این است:

arr.splice(index, deleteCount[, elem1, ..., elemN])

عنصر deleteCount را که از index شروع می شود حذف می کند و سپس elem1، ...، elemN را به جای خود درج می کند.

بیایید به چند نمونه نگاه کنیم:

var arr = ["Go", "to", "home"] arr.splice(1, 1) // حذف 1 عنصر با شروع index 1 alert(arr.join(")) // ["Go" , "home"] (1 مورد حذف شد)

بنابراین می توانید از splice برای حذف یک عنصر از یک آرایه استفاده کنید. اعداد عناصر آرایه برای پر کردن شکاف جابجا می شوند:

var arr = ["Go", "to", "home"] arr.splice(0, 1) // حذف 1 عنصر با شروع index 0 alert(arr) // "to" اولین عنصر شد

مثال زیر نحوه جایگزینی عناصر را نشان می دهد:

متد splice آرایه ای از عناصر حذف شده را برمی گرداند:

var arr = ["برو"، "به"، "خانه"، "اکنون"]; // حذف 2 عنصر اول var remove = arr.splice(0, 2) alert(removed) // "Go", "to"<-- массив удаленных элементов splice может вставлять элементы, задайте 0 для deleteCount. var arr = ["Go", "to", "home"]; // со второй позиции // удаляем 0 // и вставляем "my", "sweet" arr.splice(2, 0, "my", "sweet") alert(arr) // "Go", "to", "my", "sweet", "home"

این روش همچنین می تواند از یک شاخص منفی استفاده کند که از انتهای آرایه شمارش می شود:

var arr = // برای عنصر -1 (ماقبل آخر) // حذف 0 عنصر، // و درج 3 و 4 arr.splice(-1, 0, 3, 4) alert(arr) // 1,2,3, 4.5

وظیفه برای خودشکوفایی

شی حاوی ویژگی className است که شامل نام کلاس ها است که با فاصله از هم جدا شده اند:

var obj = ( className: "open menu")

یک تابع removeClass(obj,cls) بنویسید که در صورت داده شدن کلاس cls را حذف می کند:

removeClass(obj, "open") // obj.className="menu" removeClass(obj, "blabla") // بدون تغییر (کلاسی برای حذف وجود ندارد)

راه حل

شما باید className را به قطعات تقسیم کنید و از طریق یک حلقه در این قسمت ها تکرار کنید. اگر مطابقت یافت شود، از آرایه اشیاء جاوا اسکریپت حذف می شود و سپس به انتها اضافه می شود.

بیایید این را کمی بهینه کنیم:

تابع removeClass(elem، cls) ( for(var c = elem.className.split(" ")، i=c.length-1; i>=0; i--) ( if (c[i] == cls ) c.splice(i,1) ) elem.className = c.join(" ") ) var obj = ( className: "open menu" ) removeClass(obj, "open") removeClass(obj, "blabla") هشدار (obj.className) // منو

در مثال بالا، متغیر c در ابتدای حلقه تنظیم شده است و i روی آخرین شاخص آن تنظیم شده است.

خود حلقه در جهت مخالف اجرا می شود و با شرط i>=0 به پایان می رسد. این به این دلیل است که i>=0 سریعتر از i بررسی می شود. که جستجوی اموال را در c سرعت می بخشد.

روش برش

می توانید بخشی از یک آرایه را با استفاده از روش slice(begin[, end]) استخراج کنید: var arr = ["Why", "learn", "JavaScript"]; var arr2 = arr.slice(0,2) // 2 عنصر را می گیرد که از 0 هشدار شروع می شود(arr2.join("")) // "Why, Learn"

توجه داشته باشید که این روش تعداد عناصر آرایه را در جاوا اسکریپت تغییر نمی دهد، بلکه بخشی از آن را کپی می کند.

شما می توانید آرگومان دوم را حذف کنید تا همه عناصر از یک شاخص خاص شروع شوند:

var arr = ["چرا"، "یادگیری"، "جاوا اسکریپت"]; var arr2 = arr.slice(1) // همه عناصر را می پذیرد که با 1 هشدار شروع می شوند(arr2.join("")) // "یادگیری، جاوا اسکریپت"

این روش از شاخص های منفی پشتیبانی می کند، درست مانند String#slice.

روش معکوس

روش مفید دیگر معکوس است. فرض کنید می‌خواهم آخرین قسمت دامنه را دریافت کنم، مانند « com" از جانب " my.site.com". در اینجا نحوه انجام آن آمده است:

var domain = "my.site.com" var last = domain.split(".").reverse() alert(last)

توجه داشته باشید که آرایه های جاوا اسکریپت از یک نحو پیچیده (reverse()) برای فراخوانی یک متد و سپس استخراج یک عنصر از آرایه به دست آمده پشتیبانی می کنند.

می توانید تماس های طولانی تری مانند reverse() ایجاد کنید 0] arr.sort() alert(arr) // 1, 15, 2

کد بالا را اجرا کنید. شما سفارش 1، 15، 2 را دریافت خواهید کرد. این به این دلیل است که این روش همه چیز را به یک رشته تبدیل می کند و به طور پیش فرض از ترتیب واژگانی استفاده می کند.

درود به همه کسانی که به موضوعی مانند آرایه های چند بعدی جاوا اسکریپت و مرتب سازی علاقه مند هستند. در نشریه فعلی، سعی خواهم کرد این موضوع را با تمام جزئیات پوشش دهم.

بنابراین پس از مطالعه مقاله متوجه خواهید شد که چرا از آرایه های چند بعدی در برنامه های کاربردی وب استفاده می شود، چگونه ایجاد می شوند و چگونه می توان آنها را مدیریت و مرتب کرد. بیایید شروع به یادگیری کنیم!

آرایه های چند بعدی چگونه ایجاد می شوند و برای چیست؟

برای شروع، شایان ذکر است که چگونه یک آرایه یک بعدی منظم ایجاد می شود.

آرایه =

حال به یاد داشته باشید که یک آرایه چند بعدی آرایه ای از آرایه ها است.موافقم، به نظر می رسد توتولوژی. با این حال، تعریف را دوباره بخوانید. در واقع، یک آرایه چند بعدی از تعداد معینی تودرتو تشکیل شده است.

وضعیت زیر را در نظر بگیرید. در ابتدای یک بازی خاص، کاربر نام خود را وارد می کند و پس از پایان، جدول رتبه بندی با نام بازیکنان و رکورد آنها روی صفحه نمایش داده می شود.

واضح است که چنین اطلاعاتی در پایگاه داده ذخیره می شود. اما وقتی آن را از پایگاه داده بیرون می آوریم، یک آرایه چند بعدی دریافت می کنیم. از این گذشته، هر زیرآرایه ورود بازیکن و تعداد امتیازهای کسب شده را ذخیره می کند.

همه چیز به این شکل خواهد بود:

var results = [ ["مارکوس"، 333]، ["ناتاشا"، 211]، ["الکس"، 124] ];

همانطور که می بینید، اطلاعات را می توان به صورت ناهمگن ذخیره کرد. این می تواند رشته، اعداد و زوج باشد. این امکان پذیر است زیرا آرایه های در تایپ نشده اند.

در این حالت دسترسی به عناصر از طریق یک اپراتور دوگانه صورت می گیرد.

برای ادغام مطالب، یک برنامه کوچک را تجزیه و تحلیل کنید.

ارزش نتایج =



آرایه ها وسیله ای نسبتاً مناسب برای ذخیره داده های پیچیده مرتب شده در طول پردازش هستند. علاوه بر این، کار با آنها بسیار راحت است و در عین حال سرعت پردازش آنها نیز بسیار بالا است.

راه های مرتب سازی داده ها

جاوا اسکریپت یک متد داخلی برای آرایه ها دارد که به آن می گویند مرتب سازی(). این ابزاربسیار انعطاف پذیر و حالا دلیلش را توضیح خواهم داد.

اگر از روشی بدون پارامتر استفاده می کنید، به طور خودکار زیرآرایه ها را بر اساس عنصر اول به ترتیب حروف الفبا مرتب می کند. بله، هنگام تماس نتایج.مرتب سازی()شی تجزیه شده به شکل زیر خواهد بود:

الکسی، 124

مارکوس، 333

ناتاشا، 211

و اگر عناصر را در هر آرایه تودرتو با هم عوض کنید، دریافت خواهید کرد:

124، الکسی

211، ناتاشا

333، مارکوس

در این حالت، برای مقایسه، تمام عناصر به طور موقت به رشته تبدیل می شوند.

اگر برای حل یک مشکل خاص، به تابعی نیاز دارید که عناصر را به روشی غیر استاندارد مرتب می کند، می توانید آن را خودتان بنویسید و به عنوان یک پارامتر به آن ارسال کنید. مرتب سازی(). در این مورد، شایان ذکر است که تابع تعریف شده توسط کاربر باید برگردد:

  • یک عدد مثبت (به طور کلی 1 را انتخاب کنید) اگر اولین عنصر مشخص شده در هنگام مقایسه از عنصر دوم پیروی کند.
  • یک عدد منفی (معمولا -1) اگر دومین عنصر انتخاب شده باید از عنصر اول پیروی کند.
  • اگر دو مقدار مورد آزمایش برابر باشند، null است.

به عنوان مثال، بیایید آرایه اصلی را در نظر بگیریم نتایجمرتب شده بر اساس نقاط نتایج از بزرگ‌ترین به کوچک‌ترین مرتب‌سازی می‌شوند. این میتواند با دو راه انجام شود.

در گزینه اول منطق مرتب سازی را تغییر دادم، i.e. در شرایطی که لازم است یک عدد مثبت برگردانم، یک عدد منفی را برمی گردانم و بالعکس.

جدول ثبت:



اما در روش دوم، من منطق مرتب سازی را دست نخورده رها کردم، اما از یک روش اضافی استفاده کردم - معکوس(). همانطور که از نام آن پیداست، معکوس ترتیب عناصر را معکوس می کند.

بنابراین تابع sort() به شکل زیر خواهد بود:

1 2 3 4 5 تابع RecordSort(a, b) (اگر (a > b) 1 را برمی گرداند؛ در غیر این صورت اگر (a< b) return -1; else return 0; }

تابع RecordSort(a, b) (اگر (a > b) 1 را برمی گرداند؛ در غیر این صورت اگر (a< b) return -1; else return 0; }

و بعد از آن روش بالا را اضافه کنید.

نتیجه گیری به روشی مشابه انجام می شود.

توجه شما را به یکی جلب می کنم نکته مهم. هنگام استفاده از این توابع، تمام تغییرات در آرایه ای که آنها را اعمال می کنید، رخ می دهد. بنابراین، اگر نیاز به حفظ فرم اصلی داده ها دارید، یک کپی ایجاد کنید و سپس آن را ویرایش کنید.

خوب، بنابراین من در مورد آرایه های چند بعدی و مرتب سازی آنها صحبت کردم. اگر مقاله را دوست داشتید، در وبلاگ مشترک شوید و سایر نشریات به همان اندازه جالب را بخوانید. برای بازنشرها سپاسگزار خواهم بود. به زودی میبینمت!

خداحافظ!

با احترام، رومن چوشوف