با سلام
در سایت 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.
کسی میدونه علت چیه؟
سلام.
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
موفق باشید
@amir.javanmir جاوا اسکریپت وقتی شما arr[indexName] رو جستجو میکنی در واقع دنبال arr.indexName میگرده و برخلاف PHP و خیلی زبان های دیگه عمل میکنه. شما نمیتونید تعریف کنید: const arr = [1: 2, 2: 3]
باید به این صورت باشه: const arr = {1: 2, 2: 3}
راجع به علت هم سینتکسش این هست دنبال علت نباشید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟