سلام
من یه آرایه دارم که می خوام چند تا عضو بهش اضافه کنم و نمی خوام که اعلان اولیه رو عوض کنم
می خواستم ببینم چه جوری می شه این کار رو کرد
ممنون:46:
Printable View
سلام
من یه آرایه دارم که می خوام چند تا عضو بهش اضافه کنم و نمی خوام که اعلان اولیه رو عوض کنم
می خواستم ببینم چه جوری می شه این کار رو کرد
ممنون:46:
سلام
می تونید از متد push استفاده کنید، که بصورت native در JavaScript گنجونده شده:
کد:arr.push(1);
arr.push(2);
arr.push("string");
or better:
arr.push(1,2, "string");
رفرنس کامل کار کردن با آرایه ها در JavaScript:کد:http://w3schools.com/jsref/jsref_push.asp
کد:http://w3schools.com/jsref/jsref_obj_array.asp
یه سوال امین جان
این کار همون Overloading رو انجام میده
منظورم اینه که تو جاوااسکریپت عمل Overloading مجازه؟ و حتمآ باید از متد push براش استفاده کرد(منظورم واسه توابع نوشته شده توسط کاربره)؟
یا اینکه میشه توسط نام خود تابع اینکار رو به راحتی انجام داد؟
ممنون ولی آرایه ای که من دارم این جوریه
و نمی دونم چه جوری باید از push استفاده کنم تا جواب بدهکد:var arr = {
'arr2' : {
'100' : new Array('var1', 'var2', 'var3')
} };
قسمت پررنگ شده رو اول جواب می دم:20:نقل قول:
نه نمیشه از طریق نام خود تابع اینکار رو انجام داد، کلن در JavaScript بصورت درونی، امکاناتی برای overload کردن متد و یا توابع در نظر گرفته نشده، ولی راه هایی وجود داره، که شما می تونی ازش استفاده کنی. مثل چک کردن تعداد arguments یا پارامترها ( از کلمه ی آرگومان بدم می یاد:31: )، چک کردن نوع ( type ) ورودی و ...
ناگفته نمونه که می تونی یک arg از نوع object هم در نظر بگیری و از این طریق هم می تونی مقدارهای مورد نیازت رو بگیری ( مثل اسکریپت کوچیکی که نوشته بودم برای گردایان ( طیف رنگی! ) یادته؟ ).
جواب سوال اولت: اگه بخوای از نوع JavaScript ی بهش نگاه کنی، آره همون کار Overload کردن رو انجام می ده:20:
فکر می کنم دیگه نیاز به push نیست!:31:
چون شما از روش object literal استفاده کردید باید مثل صدازدن متدها در کلاس از اون استفاده کنید:نقل قول:
در ضمن چون نمی شه بصورت معمول متدی، متغیری، تابعی در JavaScript با عدد شروع بشه باید اون رو در بین کوتیشن ها قرار داد، و برای بکار بردن هم بصورت بالا عمل کنید.کد:arr.arr2['100'].push('var1', 'var2', 'var3');
موفق باشید.
من از این روش استفاده می کنم
ولی این خطا رو می دهکد:arr['arr2'].push('102');
1- من می خوام که یه عضو به قسمت arr2 اضافه کنم.کد:Uncaught exception: TypeError: 'arr['arr2'].push' is not a function
2- arr2 به صورت unicode هست و فکر کنم حتما باید از ['arr2'] استفاده کنم.
3- با متد push چه جوری می تونم یه عضو رو به این صورت اضافه کنم؟
کد:'100' : new Array('var1', 'var2', 'var3')
همونطور که قبلن هم گفته بودم شما دارید از روش object literal استفاده می کنید. جاوااسکریپت arr2 رو به عنوان یک object می شناسه، و طبیعی هم هست که متد push برای نوع object در JavaScript تعریف نشده باشه. در واقع شما درون 100 یک آرایه قرار دادید.
اگر بخواید از همین متد push برای اضافه کردن به object ها استفاده کنید، خیلی راحت می تونید این متد رو برای نوع Object بنویسید و و اون رو توسعه بدید!
اون چیزی که مد نظر شما هست رو می تونید در کد زیر ببینید:
____کد:Object.prototype.push = function(val) {
for (var i in val) {
this[i] = val[i];
}
return this;
};
arr.arr2.push({
'102': new Array(1,2,3,4,5),
'103': [1,2,3,4,5,6]
});
Note: برای پرفورمانس بهتر برای تعریف کردن آرایه در JavaScript نیاز نیست از new Array یا Array استفاده کرد، سعی کنید مثل مثالی که در کد بالا property 103 قرار دادم استفاده کنید. به عبارتی:
موفق باشید.کد:var arr = [1,2,3,4,5,6];
\\ better than
var arr = new Array(1,2,3,4,5,6);