آرایه‌ها در جاوااسکریپت

از ویکی کد
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به ناوبری پرش به جستجو

JavaScript arrays are used to store multiple values in a single variable.

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

Example

var cars = ["Saab", "Volvo", "BMW"];

What is an Array?

یک آرایه چیست ؟

An array is a special variable, which can hold more than one value at a time.

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

If you have a list of items (a list of car names, for example), storing the cars in single variables could look like this:

اگر شما لیستی از آیتمها را دارید ( برای مثال ، لیستی از نام اتومبیل ها ) ذخیره نام اتومبیل ها در یک متغیر به صورت زیر خواهد بود :

var car1 = "Saab";

var car2 = "Volvo";

var car3 = "BMW";

However, what if you want to loop through the cars and find a specific one? And what if you had not 3 cars, but 300?

اما ، اگر شما بخواهید که در لیست آیتم های خود به وسیله یک حلقه جستجو کنید و نام یک اتومبیل به خصوص را بیابید به چه شکل می بایست اینکار را کنید ؟ و چه می شود اگر به جای نام سه اتومبیل ، شما 300 نام اتومبیل داشتید ؟

The solution is an array!

راه حل این مشکل استفاده ازآرایه است.

An array can hold many values under a single name, and you can access the values by referring to an index number.

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

Creating an Array

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

Using an array literal is the easiest way to create a JavaScript Array.

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

Syntax:

شیوه تعریف :

var array_name = [item1, item2, ...];    

Example

var cars = ["Saab", "Volvo", "BMW"];

Spaces and line breaks are not important. A declaration can span multiple lines:

فضاهای خالی و فاصله بین خطوط  مهم نیستند . تعریف یک آرایه می تواند در چندین خط صورت بگیرد :

Example

var cars = [

 "Saab",

  "Volvo",

  "BMW"

];

Putting a comma after the last element (like "BMW",)  is inconsistent across browsers.

نوشتن علامت ویرگول یا Comma بعد از آخرین عنصر ( همانند "BMW") برای مرورگرها ناسازگار است .

IE 8 and earlier will fail.

در مرورگر اینترنت اکسپلور ورژن 8 و ورژنهای قدیمی تر موجب بروز خطا خواهد شد .

Using the JavaScript Keyword new

استفاده از کلمه کلیدی new در جاوااسکریپت

The following example also creates an Array, and assigns values to it:

مثال زیر ، هم یک آرایه  می سازد و هم آن را مقداردهی می کند :

Example

var cars = new Array("Saab", "Volvo", "BMW");

The two examples above do exactly the same. There is no need to use new Array().

دو مثال بالا دقیقا یک کار را انجام می دهد . نیازی نیست که از new Array() استفاده کنید .

For simplicity, readability and execution speed, use the first one (the array literal method).

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

Access the Elements of an Array

دسترسی به عناصر یک آرایه

You access an array element by referring to the index number.

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

This statement accesses the value of the first element in cars:

عبارت زیر موجب دسترسی به اولین عنصر آرایه cars می شود :

var name = cars[0];

Example

var cars = ["Saab", "Volvo", "BMW"];

document.getElementById("demo").innerHTML = cars[0];

Note: Array indexes start with 0.

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

[0] is the first element. [1] is the second element.

اندیس صفر ]0[ به عنصر اول ارایه اشاره دارد . اندیس یک ]1[ به عنصر دوم اشاره دارد .

Changing an Array Element

تغییر مقداریک عنصر در آرایه

This statement changes the value of the first element in cars:

عبارت زیر مقدار اولین عنصر در آرایه cars را تغییر می دهد :

cars[0] = "Opel";

Example

var cars = ["Saab", "Volvo", "BMW"];

cars[0] = "Opel";

document.getElementById("demo").innerHTML = cars[0];

Access the Full Array

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

With JavaScript, the full array can be accessed by referring to the array name:

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

Example

var cars = ["Saab", "Volvo", "BMW"];

document.getElementById("demo").innerHTML = cars;

Arrays are Objects

آرایه ها نوعی از اشیا یا object ها هستند .

Arrays are a special type of objects. The typeof operator in JavaScript returns "object" for arrays.

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

But, JavaScript arrays are best described as arrays.

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

Arrays use numbers to access its "elements". In this example, person[0] returns John:

آرایه ها از اعداد برای دسترسی به عناصرشان استفاده می کنند . در مثال زیر ،عبارت person[0] مقدار John راباز می گرداند :

Array:

آرایه :

var person = ["John", "Doe", 46];

Objects use names to access its "members". In this example, person.firstName returns John:

اشیا یا object  ها از نام برای دسترسی به عناصرشان استفاده می کنند . در این مثال person.firstname عبارت John را باز میگرداند :

Object:

شی :

var person = {firstName:"John", lastName:"Doe", age:46};

Array Elements Can Be Objects

عناصر آرایه می توانند شی یا object باشند .

JavaScript variables can be objects. Arrays are special kinds of objects.

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

Because of this, you can have variables of different types in the same Array.

به همین دلیل ، شما می توانید متغیر هایی با نوع داده های متفاوت را در یک آرایه داشته باشید .

You can have objects in an Array. You can have functions in an Array. You can have arrays in an Array:

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

myArray[0] = Date.now;

myArray[1] = myFunction;

myArray[2] = myCars;

Array Properties and Methods

ویژگی ها و متدهای آرایه

The real strength of JavaScript arrays are the built-in array properties and methods:

قدرت واقعی آرایه های جاوااسکریپت ویژگی ها و متدهای تعریف شده برای آرایه ها است :

Examples

var x = cars.length;   // The length property returns the number of elements

var y = cars.sort();   // The sort() method sorts arrays

Array methods are covered in the next chapters.

متد های آرایه ها در فصل بعدی توضیح داده شده اند .

The length Property

ویژگی length

The length property of an array returns the length of an array (the number of array elements).

ویژگی length یک آرایه طول آرایه ( تعداد عناصر یک آرایه ) را باز می گرداند .

Example

var fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits.length;   // the length of fruits is 4

The length property is always one more than the highest array index.

ویژگی length همیشه یک واحد از بیشترین اندیس یک آرایه، بیشتر است .

Accessing the First Array Element

دسترسی به اولین عنصر یک آرایه

Example

fruits = ["Banana", "Orange", "Apple", "Mango"];

var first = fruits[0];

Accessing the Last Array Element

دسترسی به آخرین عنصر یک آرایه

Example

fruits = ["Banana", "Orange", "Apple", "Mango"];

var last = fruits[fruits.length - 1];

Looping Array Elements

استفاده از حلقه برای دسترسی به عناصر یک آرایه

The safest way to loop through an array, is using a for loop:

بهترین روش برای دسترسی به عناصر یک آرایه با حلقه ، استفاده از حلقه for است :

Example

var fruits, text, fLen, i;

fruits = ["Banana", "Orange", "Apple", "Mango"];

fLen = fruits.length;


text = "<ul>";

for (i = 0; i < fLen; i++) {

 text += "<li>" + fruits[i] + "</li>";

}

text += "</ul>";

You can also use the Array.forEach() function:

شما همچنین می توانید از تابع Array.forEach() استفاده کنید :

Example

var fruits, text;

fruits = ["Banana", "Orange", "Apple", "Mango"];


text = "<ul>";

fruits.forEach(myFunction);

text += "</ul>";


function myFunction(value) {

  text += "<li>" + value + "</li>";

}

Adding Array Elements

اضافه کردن به عناصر یک آرایه

The easiest way to add a new element to an array is using the push() method:

ساده ترین روش برای وارد کردن یک عنصر جدید در یک آرایه استفاده از متد push()  است :

Example

var fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits.push("Lemon");    // adds a new element (Lemon) to fruits

New element can also be added to an array using the length property:

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

Example

var fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits[fruits.length] = "Lemon";    // adds a new element (Lemon) to fruits

WARNING !

هشدار !

Adding elements with high indexes can create undefined "holes" in an array:

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

Example

var fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits[6] = "Lemon";    // adds a new element (Lemon) to fruits

Associative Arrays

آرایه های Associative

Many programming languages support arrays with named indexes.

بسیاری از زبان های برنامه نویسی از اندیس های نامگذاری شده پشتیبانی می کنند .

Arrays with named indexes are called associative arrays (or hashes).

آرایه ها با اندیس های نامگذاری شده ، آرایه های Associative ( یا هش) نامیده می شوند .

JavaScript does not support arrays with named indexes.

جاوااسکریپت از آرایه ها با اندیس نامگذاری شده پشتیبانی نمی کند .

In JavaScript, arrays always use numbered indexes.  

در جاوااسکریپت ، آرایه ها همیشه از اندیس های عددی استفاده می کنند .

Example

var person = [];

person[0] = "John";

person[1] = "Doe";

person[2] = 46;

var x = person.length;    // person.length will return 3

var y = person[0];        // person[0] will return "John"

WARNING !!

هشدار !

If you use named indexes, JavaScript will redefine the array to a standard object.

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

After that, some array methods and properties will produce incorrect results.

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

Example:

var person = [];

person["firstName"] = "John";

person["lastName"] = "Doe";

person["age"] = 46;

var x = person.length;     // person.length will return 0

var y = person[0];        // person[0] will return undefined

The Difference Between Arrays and Objects

تفاوت بین آرایه ها و اشیا یاobject ها

In JavaScript, arrays use numbered indexes.  

در جاوااسکریپت ، آرایه ها از اندیس های عددی استفاده می کنند .

In JavaScript, objects use named indexes.

در جاوااسکریپت ، اشیا یا object ها از اندیس های نامگذاری شده استفاده می کنند .

Arrays are a special kind of objects, with numbered indexes.

آرایه ها نوعی از اشیا یا object ها هستند که از اندیس های عددی استفاده می کنند .

When to Use Arrays. When to use Objects.

چه زمانی از آرایه استفاده کنیم . چه زمانی از اشیا یا object ها استفاده کنیم.

·  JavaScript does not support associative arrays.

جاوااسکریپت از آرایه های associative پشتیبانی نمی کند .

You should use objects when you want the element names to be strings (text).

شما می بایست زمانی که می خواهید نام عناصر به صورت رشته ای (متنی) باشد از اشیا یا object  ها استفاده کنید.

·  You should use arrays when you want the element names to be numbers.

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

Avoid new Array()

از استفاده از دستور new Array() پرهیز کنید

There is no need to use the JavaScript's built-in array constructor new Array().

هیچ نیازی نیست که از متد سازنده آرایه  جاوااسکریپت یعنی new Array استفاده کنید .

Use [] instead.

به جای آن  از [ ] استفاده کنید .

These two different statements both create a new empty array named points:

هر دو تکه کد متفاوت زیر یک آرایه جدید خالی با نام points ایجاد می کنند .

var points = new Array();     // Bad

var points = [];              // Good

These two different statements both create a new array containing 6 numbers:

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

var points = new Array(40, 100, 1, 5, 25, 10); // Bad

var points = [40, 100, 1, 5, 25, 10];          // Good

The new keyword only complicates the code. It can also produce some unexpected results:

کلمه کلیدی new تنها موجب پیچیده تر شدن کد می شود . همچنین می تواند موجب بروز برخی از نتایج یا خطاهای ناخواسته شود :

var points = new Array(40, 100);  // Creates an array with two elements (40 and 100)

What if I remove one of the elements?

چه اتفاقی می افتد اگر من یک عنصر را پاک کنم؟

var points = new Array(40);  // Creates an array with 40 undefined elements !!!!!

How to Recognize an Array

چطور یک آرایه را تشخیص دهیم

A common question is: How do I know if a variable is an array?

مهم ترین سوال این است : من چطور می توانم بفهمم یک متغیر یک آرایه است ؟

The problem is that the JavaScript operator typeof returns "object":

مشکل این است که عملگر Typeof برای آرایه ها عبارت object را به عنوان خروجی باز می گرداند .

var fruits = ["Banana", "Orange", "Apple", "Mango"];


typeof fruits;    // returns object

The typeof operator returns object because a JavaScript array is an object.

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

Solution 1:

راه حل اول :

To solve this problem ECMAScript 5 defines a new method Array.isArray():

ECMAScript 5 برای حل این مشکل یک متد جدید تحت عنوان Array.isArray() تعریف کرده است :

Array.isArray(fruits);   // returns true

The problem with this solution is that ECMAScript 5 is not supported in older browsers.

مشکلی که در این روش وجود دارد این است که ECMAScript 5 در مرورگرهای قدیمی پشتیبانی نمی شود .

Solution 2:

راه حل دوم :

To solve this problem you can create your own isArray() function:

برای حل این مشکل شما می توانید تابع isArray() خودتان را تعریف کنید :

function isArray(x) {

  return x.constructor.toString().indexOf("Array") > -1;

}

The function above always returns true if the argument is an array.

تابع فوق ، در صورتی که آرگومان ورودی آن یک آرایه باشد مقدار True را باز میگرداند .

Or more precisely: it returns true if the object prototype contains the word "Array".

و یا به صورت دقیقتر : تابع فوق در صورتی که prototype آرگومان ورودی شامل کلمه "Array"  باشد مقدار True را باز می گرداند .

Solution 3:

راه حل سوم :

The instanceof operator returns true if an object is created by a given constructor:

عملگر instanceof در صورتی که عملوند اول که همان شی ما است از عملوند دوم که همان سازنده ما است ساخته شده باشد مقدار True را باز میگرداند .

var fruits = ["Banana", "Orange", "Apple", "Mango"];


fruits instanceof Array;   // returns true