امیر جوان میر
4 سال پیش توسط امیر جوان میر مطرح شد
2 پاسخ

آرایه های انجمنی یا Associative array

با سلام

در سایت w3schools درباره آرایه های انجمنی گفته شده از آرایه های که دارای index بصورت نام هستند پشتیبانی نمی کند.

متن:
Associative Arrays
Many programming languages support arrays with named indexes.
Arrays with named indexes are called associative arrays (or hashes).
JavaScript does not support arrays with named indexes.
In JavaScript, arrays always use numbered indexes.  

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.

کسی میدونه علت چیه؟


ثبت پرسش جدید
Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
3

سلام.

Many programming languages support arrays with named indexes. Arrays
with named indexes are called associative arrays (or hashes).
JavaScript does not support arrays with named indexes. In JavaScript,
arrays always use numbered indexes.

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

یکی از زبون‌هایی که از این نوع آرایه‌ها پشتیبانی می‌کنه، پی‌اچ‌پی خودمونه:

$arr = ['foo' => true];

اینجا از یک key و value مشخص استفاده کردیم و foo که کلیده، نقش index رو داره. توی توضیحاتی که شما زحمتشو کشیدید و گذاشتید گفته که به این آرایه‌ها هش هم میگن، هش همون هش‌تیبله که یه نوع دیتاستراکچر (داده‌ساختار؟‌ 😁) معروفه و بخاطر سرعت دسترسی بالاش ازش استفاده میشه. مثل اینکه یه جدول داشته باشید که توی یه ستون اسم دوستاتون و توی ستون دیگه سنشون رو نوشته باشید. وقتی کسی بپرسه رضا، فوری می‌گید مثلا ۳۰!

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

let hash = {'Ali': 19, 'Reza': 30, 'Farhad': 28}
console.log(hash.Ali) // 19

موفق باشید


محمد عابدی
تخصص : Senior Web Developer
@abedim910 4 سال پیش مطرح شد
2

@amir.javanmir جاوا اسکریپت وقتی شما arr[indexName] رو جستجو میکنی در واقع دنبال arr.indexName میگرده و برخلاف PHP و خیلی زبان های دیگه عمل میکنه. شما نمیتونید تعریف کنید: const arr = [1: 2, 2: 3] باید به این صورت باشه: const arr = {1: 2, 2: 3}
راجع به علت هم سینتکسش این هست دنبال علت نباشید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام