ورود

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



MrGee
22-07-2010, 16:50
سلام

من یه آرایه دارم که می خوام چند تا عضو بهش اضافه کنم و نمی خوام که اعلان اولیه رو عوض کنم 
می  خواستم ببینم چه جوری می شه این کار رو کرد
ممنون:46:

eAmin
22-07-2010, 21:45
سلام

می تونید از متد push استفاده کنید، که بصورت native در JavaScript گنجونده شده:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

رفرنس کامل کار کردن با آرایه ها در JavaScript:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

David.Jn
23-07-2010, 08:18
یه سوال امین جان
این کار همون Overloading رو انجام میده
منظورم اینه که تو جاوااسکریپت عمل Overloading مجازه؟ و حتمآ باید از متد push براش استفاده کرد(منظورم واسه توابع نوشته شده توسط کاربره)؟
یا اینکه میشه توسط نام خود تابع اینکار رو به راحتی انجام داد؟

MrGee
23-07-2010, 10:01
ممنون ولی آرایه ای که من دارم این جوریه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدو نمی دونم چه جوری باید از push استفاده کنم تا جواب بده

eAmin
23-07-2010, 16:26
یه سوال امین جان
این کار همون Overloading رو انجام میده
منظورم اینه که تو جاوااسکریپت عمل Overloading مجازه؟ و حتمآ باید از متد push براش استفاده کرد(منظورم واسه توابع نوشته شده توسط کاربره)؟
یا اینکه میشه توسط نام خود تابع اینکار رو به راحتی انجام داد؟
قسمت پررنگ شده رو اول جواب می دم:20:
نه نمیشه از طریق نام خود تابع اینکار رو انجام داد، کلن در JavaScript بصورت درونی، امکاناتی برای overload کردن متد و یا توابع در نظر گرفته نشده، ولی راه هایی وجود داره، که شما می تونی ازش استفاده کنی. مثل چک کردن تعداد arguments یا پارامترها ( از کلمه ی آرگومان بدم می یاد:31: )، چک کردن نوع ( type ) ورودی و ...
ناگفته نمونه که می تونی یک arg از نوع object هم در نظر بگیری و از این طریق هم می تونی مقدارهای مورد نیازت رو بگیری ( مثل اسکریپت کوچیکی که نوشته بودم برای گردایان ( طیف رنگی! ) یادته؟ ).

جواب سوال اولت: اگه بخوای از نوع JavaScript ی بهش نگاه کنی، آره همون کار Overload کردن رو انجام می ده:20:
فکر می کنم دیگه نیاز به push نیست!:31:

ممنون ولی آرایه ای که من دارم این جوریه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدو نمی دونم چه جوری باید از push استفاده کنم تا جواب بده
چون شما از روش object literal استفاده کردید باید مثل صدازدن متدها در کلاس از اون استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در ضمن چون نمی شه بصورت معمول متدی، متغیری، تابعی در JavaScript با عدد شروع بشه باید اون رو در بین کوتیشن ها قرار داد، و برای بکار بردن هم بصورت بالا عمل کنید.

موفق باشید.

MrGee
23-07-2010, 23:47
من از این روش استفاده می کنم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدولی این خطا رو می ده

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

1- من می خوام که یه عضو به قسمت arr2 اضافه کنم.
2- arr2 به صورت unicode هست و فکر کنم حتما باید از ['arr2'] استفاده کنم.
3- با متد push چه جوری می تونم یه عضو رو به این صورت اضافه کنم؟

 
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

eAmin
24-07-2010, 13:26
همونطور که قبلن هم گفته بودم شما دارید از روش object literal استفاده می کنید. جاوااسکریپت arr2 رو به عنوان یک object می شناسه، و طبیعی هم هست که متد push برای نوع object در JavaScript تعریف نشده باشه. در واقع شما درون 100 یک آرایه قرار دادید.

اگر بخواید از همین متد push برای اضافه کردن به object ها استفاده کنید، خیلی راحت می تونید این متد رو برای نوع Object بنویسید و و اون رو توسعه بدید!
اون چیزی که مد نظر شما هست رو می تونید در کد زیر ببینید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
____

Note: برای پرفورمانس بهتر برای تعریف کردن آرایه در JavaScript نیاز نیست از new Array یا Array استفاده کرد، سعی کنید مثل مثالی که در کد بالا property 103 قرار دادم استفاده کنید. به عبارتی:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشید.