آگهی
article

آرایه (Array) در جاوا اسکریپت (JavaScript)

javascript-array

بحث آرایه ها در زبان های برنامه نویسی مخصوصا در برنامه نویسی وب از جمله شیرین ترین و در عین حال حساس ترین مباحث به شمار می آید، از طرفی استفاده از آرایه (Array) در برنامه نویسی های پیشرفته یک امر اجتناب ناپذیر است ولی به دلیل وجود ظرایف خاص، جزئیات و اینکه درک صحیح این قابلیت نیاز به فراگیری دقیق مقدمات آن دارد، می تواند در نگاه نخست مبحثی پیچیده و عجیب به نظر برسد؛ از این رو در ادامه آموزش های مقدماتی جاوا اسکریپت (JavaScript)، این بار به سراغ آرایه ها رفته ایم تا با هم، کمی بیشتر در دنیای جالب آن سیر کنیم.

آرایه (Array) چیست؟


آرایه در برنامه نویسی، به یک متغیر گفته می شود که درون خود، متغیرهایی زیر مجموعه با نام و مقادیر متفاوت دارد، به طور مثال دفترچه ای را در نظر بگیرید (آرایه) که تعدادی صفحه دارد (شماره هر صفحه = نام متغیرهای آرایه) و در هر صفحه، اطلاعاتی وجود دارد (مقادیر متغیرهای درون آرایه)، کارکرد آرایه ها نیز بی شباهت به این مثال نیست؛ توجه کنید که این سیستم به صورت از پیش تعریف شده (built-in یا درونی) در مفسر جاوا اسکریپت وجود دارد، یعنی نیازی نیست برای تفهیم کارکرد آرایه ها به مرورگر، تمام جزئیات را بنویسیم، اما لازم است که برای ایجاد و به کارگیری آرایه ها، اصول و قواعد خاصی را در رابطه با شیوه نگارش (syntax) آنها رعایت کنیم که در ادامه خواهیم گفت.

شیوه نگارش (syntax) آرایه در جاوا اسکریپت


برای نوشتن و تعریف یک آرایه در جاوا اسکریپت، تقریبا دو شیوه متفاوت ولی با کارکرد یکسان وجود دارد، در هر دو شیوه یک متغیر کلی برای آرایه تعریف می کنیم و سپس متغیرها و مقادیر زیر مجموعه آن را به آرایه نسبت می دهیم، این دو شیوه متفاوت را در مثال زیر می توانید مشاهده کنید.
روش اول (تعریف آرایه به روش استاندارد):
<script type="text/javascript">
//تعریف متغیر اصلی آرایه
var myArray = new Array();
//تعریف متغیرهای زیر مجموعه و مقادیر برای آرایه ها
myArray[0] = "آموزش";
myArray[1] = "جاوا";
myArray[2] = "اسکریپت";
//گرفتن خروجی از متغیرهای آرایه
document.write(myArray[0] + ' ' + myArray[1] + ' ' + myArray[2]);
</script>
برای دیدن پیش نمایش آنلاین مثال ها، به انتهای این مطلب رجوع کنید.
خروجی مثال بالا به شکل زیر خواهد بود.
آموزش جاوا اسکریپت
توضیح:
- همانطور که می بینید، ابتدا یک متغیر کلی برای آرایه خود تعریف کرده ایم، این کار را با نسبت دادن new Array به متغیر فرضی myArray انجام داده ایم.
- بعد از اینکه آرایه را تعریف کردیم، باید متغیرهای زیر مجموعه آن و مقادیرشان را هم مشخص کنیم؛ نام متغیرهای آرایه در مثال بالا با یک [] شماره گذاری شده اند، به عدد داخل این [] کلید آرایه می گویند که متغیرهای متفاوت آن را از هم تفکیک می کند، به یاد داشته باشیم که شمارش این کلید ها در برنامه نویسی، از صفر شروع می شود نه از یک.
- هر کلید در مثال بالا، در واقع یک متغیر زیرمجموعه از آرایه اصلی ما است که مقادیری به عنوان مقدار در خود دارد (اگر مثال دفتر، صفحات و اطلاعات صفحات را شبیه سازی کنید، درک نحوه کارکرد آرایه چندان سخت نیست).
- در پایان کد بالا نیز، با یک دستور document.write ساده، مقادیر متغیرهای آرایه را به خروجی ارسال کرده ایم، استفاده از مقادیر متغیرها بسته به هدف شما در برنامه نویسی، متفاوت خواهد بود، لذا الزامی نیست که حتما مقادیر به صورت خام به خروجی ارسال شوند و می توانند بعد از فرایندی، با مقادیر دیگر ترکیب یا تفریق شوند و خلاصه هر آنچه که در برنامه نویسی می توان با یک متغیر انجام داد، در اینجا نیز شدنی است.
روش دوم (تعریف آرایه به روش مختصر نویسی):
در روش مختصر نویسی آرایه ها، از علامت [] و یا () به طور کلی برای مقادیر متغیرهای آرایه استفاده می کنیم، در این شیوه، متغیرها و کلیدها، به صورت خودکار تعریف شده و در دسترس هستند، یعنی کافی است مقادیر آنها را تعیین کنیم و بقیه کار را به مفسر جاوا اسکریپت بسپاریم.
<script type="text/javascript">
//تعریف متغیر اصلی آرایه و مقادیر به روش مختصر نویسی
var Books = new Array("تاریخ","جغرافیا","ریاضی");
//گرفتن خروجی از متغیرهای آرایه
document.write(Books[0] + ' ' + Books[1] + ' ' + Books[2]);
</script>
خروجی مثال بالا به شکل زیر خواهد بود.
تاریخ جغرافیا ریاضی
توضیح:
کارکرد این شیوه نیز دقیقا مشابه روش استاندارد است، با این تفاوت که در اینجا مقادیر متغیرهای آرایه به صورت خودکار و توسط مفسر جاوا اسکریپت مرورگر ایجاد می شود.
روش مختصر نویسی با علامت []:
همان طور که گفتیم، در روش مختصر نویسی آرایه ها در جاوا اسکریپت، از دو علامت [] و () می توانیم استفاده کنیم.
<script type="text/javascript">
//تعریف متغیر اصلی آرایه و مقادیر به روش مختصر نویسی
var Domains = ["ir","com","net"];
//گرفتن خروجی از متغیرهای آرایه
document.write(Domains[0] + ' ' + Domains[1] + ' ' + Domains[2]);
</script>
خروجی مثال بالا به شکل زیر خواهد بود.
ir com net
توضیح:
- ملاحظه می کنید که در اینجا نیازی نیست از new Array استفاده کنیم، در واقع وقتی علامت [] را برای تعریف یک متغیر به کار می بریم، مفسر مرورگر آن را به عنوان یک آرایه می شناسد.

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


اکنون که با آرایه و نحوه تعریف و کاربرد آن آشنا شدیم، نوبت آن رسیده که گام را کمی فراتر بنهیم و با متدهای تکمیلی آن نیز آشنا شویم.
متدها در بحث آرایه، به خاصیت هایی گفته می شوند که می توانند رفتار آرایه ها را برایمان مدیریت کنند، در لیست زیر این متدها و کاربردشان را معرفی می کنیم.
- متد concat: برای ترکیب دو یا چند آرایه و ایجاد یک آرایه جدید.
Array1.concat(Array2,Array3);
- متد join: الحاق تمام عناصر یک آرایه در یک رشته متنی.
Array.join();
نکته: برای این کار می توان از toString نیز استفاده کرد.
Array.toString();
- متد pop: حذف آخرین عنصر از یک آرایه و برگرداندن آن.
Array.pop();
- متد push: افزودن یک یا چند عنصر به آرایه و برگرداندن تعداد مقادیر آرایه.
Array.push("value1,value2")
- متد reverse: تغییر چینش متغیرهای آرایه به صورت معکوس (برای حروف انگلیسی).
Array.reverse();
- متد shift: حذف اولین مقدار از آرایه و برگرداندن آن و تبدیل اولین مقدار به یک آرایه جدید.
Array.shift();
- متد splice: انتخاب یک یا چند مقدار از آرایه با تعیین ابتدا و انتهای برش یا افزودن یک یا چند مقدار با تعیین انتها و ابتدای برش و مقادیر.
Array.slice(num1,num2);
Array.slice(num2,num1,"value1","value2");
- متد sort: چینش منظم و خودکار نتایج یک آرایه بر اساس حروف الفبا و ... (برای حروف انگلیسی).
متد sort در حالت پیش فرض، مقادیر را به ترتیب حروف الفبا چینش می کند.
Array.sort();
همچنین متد sort می تواند مقادیر عددی را به صورت صعودی (از کوچکتر به بزرگتر یا ascending) چینش کند.
Array.sort(function(a,b){return a-b});
و یا مقادیر عددی را برعکس، به صورت نزولی (از بزرگتر به کوچکتر یا descending) چینش کند.
Array.sort(function(a,b){return b-a});
- متد unshift: افزودن یک یا چند مقدار به ابتدای یک آرایه و برگرداندن مقادیر جدید آرایه (در مرورگر اینترنت اکسپلورر 8 و ماقبل به درستی پشتیبانی نمی شود).
Array.unshift("value1","value2");

مثال و پیش نمایش آنلاین


در زیر تقریبا برای تمام موارد گفته شده در خصوص آرایه ها، می توانید یک مثال به همراه پیش نمایش خروجی آن را به صورت آنلاین ملاحظه کنید.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>وبگو | آرایه ها در جاوا اسکریپت</title>
<!-- https://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
</style>
</head>
<body>
<noscript>
جاوا اسکریپت در مرورگر شما غیر فعال است! <br />
</noscript>

تعریف آرایه به شیوه استاندارد:<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه
var myArray = new Array();
//تعریف متغیرهای زیر مجموعه و مقادیر برای آرایه ها
myArray[0] = "آموزش";
myArray[1] = "جاوا";
myArray[2] = "اسکریپت";
//گرفتن خروجی از متغیرهای آرایه
document.write(myArray[0] + ' ' + myArray[1] + ' ' + myArray[2]);
//]]>
</script>
<hr />

تعریف آرایه به شیوه مختصر نویسی با علامت ():<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه و مقادیر به روش مختصر نویسی
var Books = new Array("تاریخ","جغرافیا","ریاضی");
//گرفتن خروجی از متغیرهای آرایه
document.write(Books[0] + ' ' + Books[1] + ' ' + Books[2]);
//]]>
</script>
<hr />

تعریف آرایه به شیوه مختصر نویسی با علامت []:<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه و مقادیر به روش مختصر نویسی
var Domains = ["ir","com","net"];
//گرفتن خروجی از متغیرهای آرایه
document.write(Domains[0] + ' ' + Domains[1] + ' ' + Domains[2]);
//]]>
</script>
<hr />

استفاده از متد concat:<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه و مقادیر
var user = ["user1","user2","user3"];
var admin = ["admin1","admin2","admin3"];
//استفاده از متد concat
var allusers = user.concat(admin);
//گرفتن خروجی
document.write(allusers);
//]]>
</script>
<hr />

استفاده از متد join:<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه و مقادیر
var user = ["user1","user2","user3"];
//استفاده از متد join
user.join();
//گرفتن خروجی
document.write(user);
//]]>
</script>
<hr />

استفاده از متد pop:<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه و مقادیر
var user = ["user1","user2","user3"];
//استفاده از متد pop
user.pop();
//گرفتن خروجی
document.write(user);
//]]>
</script>
<hr />

استفاده از متد push:<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه و مقادیر
var user = ["user1","user2","user3"];
//استفاده از متد push
user.push("user4,user5");
//گرفتن خروجی
document.write(user);
//]]>
</script>
<hr />

استفاده از متد reverse:<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه و مقادیر
var user = ["user1","user2","user3"];
//استفاده از متد reverse
user.reverse();
//گرفتن خروجی
document.write(user);
//]]>
</script>
<hr />

استفاده از متد shift:<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه و مقادیر
var user = ["user1","user2","user3"];
//استفاده از متد shift
user.shift();
//گرفتن خروجی
document.write(user);
//]]>
</script>
<hr />

استفاده از متد slice:<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه و مقادیر
var user = ["user1","user2","user3"];
//استفاده از متد slice
var someusers = user.slice(0,2);
//گرفتن خروجی
document.write(someusers);
//]]>
</script>
<hr />

استفاده از متد sort:<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه و مقادیر
var user = ["user3","user1","user2"];
var num = ["1","8","6"];
//استفاده از متد sort
user.sort();
num.sort(function(a,b){return a-b});
//گرفتن خروجی
document.write(user) + document.write(' - ') + document.write(num);
//]]>
</script>
<hr />

استفاده از متد unshift:<br /><br />
<script type="text/javascript">
//<![CDATA[
//تعریف متغیر اصلی آرایه و مقادیر
var user = ["user1","user2","user3"];
//استفاده از متد unshift
user.unshift("user4","user5");
//گرفتن خروجی
document.write(user);
//]]>
</script>
</body>
</html>
پیش نمایش  
sectionدسته بندی: آموزش مقدماتی » JavaScript
related مطالب بیشتر:
» حلقه for و while در جاوا اسکریپت (JavaScript)
» رویداد ها (Events) در جاوا اسکریپت (JavaScript)
» دستور switch و case در جاوا اسکریپت (JavaScript)
» عملگرها (Operators) در جاوا اسکریپت (JavaScript)
» کار با پنجره Pop-up در جاوا اسکریپت (JavaScript)
commentنظرات (۳۷ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: Farbod-sh
زمان: ۰۱:۴۵:۴۷ - تاریخ: ۱۳۹۳/۱۱/۱۰
سلام و خسته نباشید.
می خواستم بدونم نمیشه با همین آرایه ها یک حرف از یک کلمه یا رشته رو حذف کرد؟ یعنی کاری که دکمۀ 'Back Space' روی کیبورد انجام میده رو با تعریف یک Button و به کمک جاوا اسکریپت روی صفحه آورد. (مثل کیبورد مجازی بانک ها که دکمۀ BackSpace رو دارند) اگر به این روش نه ولی با جاوا اسکریپت امکان پذیر است، خواهش میکنم راهنمایی کنید.
ممون از سایت خوبتون
پاسخ: 
سلام
برای شبیه سازی دکمه BackSpace با جاوا اسکریپت می توانید از تابع زیر استفاده کنید:
<script type="text/javascript">
function backspaceAtCursor(id){
var field = document.getElementById(id);
if(field.selectionStart){
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
if(field.selectionStart == field.selectionEnd){
field.value = field.value.substring(0, startPos - 1) + field.value.substring(endPos, field.value.length);
field.focus();
field.setSelectionRange(startPos - 1, startPos - 1);
}
else{
field.value = field.value.substring(0, startPos) + field.value.substring(endPos, field.value.length);
field.focus();
field.setSelectionRange(startPos, startPos);
}
}
}
</script>
<input type="text" id="test"><br>
<input type="button" value="BackSpace!" onclick="backspaceAtCursor('test');">
نویسنده: علی
زمان: ۲۰:۰۹:۲۸ - تاریخ: ۱۳۹۴/۰۷/۲۷
سلام :
ایا امکان تعریف آرایه های دوبعدی یا بیشتر هم در جاوااسکریپت وجود داره .
پاسخ: 
سلام
بله، البته آرایه بیشتر از دوبعدی معمولا کاربرد چندانی ندارد، مثال:
<script type="text/javascript">
//2d array
var my_2d_array = new Array();
my_2d_array[0] = new Array("Hello! (2d)", "Hi! (2d)");
alert(my_2d_array[0][0]);
//3d array
var my_3d_array = new Array();
my_3d_array[0] = new Array();
my_3d_array[0][0] = new Array("Hello! (3d)", "Hi! (3d)");
alert(my_3d_array[0][0][1]);
</script>
نویسنده: علی
زمان: ۱۹:۱۳:۴۸ - تاریخ: ۱۳۹۴/۰۸/۱۴
سلام : خسته نباشید
جاوااسکریپت چطوری تابع sort رو پیاده سازی کرده .
پاسخ: 
سلام
برای این منظور متد sort به همراه تابع برگشتی استفاده می شود:
http://www.w3schools.com/jsref/jsref_sort.asp

http://www.javascriptkit.com/javatutors/arraysort2.shtml
نویسنده: علی
زمان: ۱۴:۰۹:۴۰ - تاریخ: ۱۳۹۴/۰۸/۱۶
ممنون در این صفحه که شما گذاشتید فقط گفته برای مرتب سازی نامبر از تابع مقایسه ای استفاده می کنه منظور من این نبود منظورم این بود که از کدوم الگوریتم مرتب سازی استفاده می کنه و اینکه به مرورگرها هم بستگی داره یا نه ؟
پاسخ: 
اطلاع دقیقی در این خصوص نداریم، الگوریتم نویسی در این سطح اغلب در تولید نرم افزارها (مرورگرها) به کار می رود و شامل مباحث پیچیده و زمانبر است که برای کاربردهای عادی چندان ضرورتی ندارد، صرفا در حد اطلاعات اولیه برخی از متدها بین مرورگرهای مختلف (خانواده موزیلا، گوگل کروم و...) از الگوریتم های متفاوتی استفاده می کنند، اما هرچه که به جلو می رویم، نتیجه این الگوریتم ها به حالت استاندارد و مشابهت، نزدیک تر می شود.
نویسنده: rezi
زمان: ۱۲:۴۴:۵۹ - تاریخ: ۱۳۹۴/۰۸/۲۸
با سلام
من اطلاعات داده را از پایگاه داده می خوانم و به فرمت JSON به جاوا اسکریپت تحویل میدهم. اگر با استفاده از دستور document.getElementById بخونم مشکلی نیست ولی اگر بخواهم اطلاعات وارده را که به صورت آرایه است را به تابعی ارسال کنم قبول نمی کند و کار نمی کند.
اگر بخواهم این آرایه را به تابعی در جاوا اسکریپت انتقال دهم باید چه کار کنم
با تشکر
پاسخ: 
سلام
انتقال آرایه به تابع به صورت آرگیومنت به خودی خود امری متداول است، منتها به نظر، شما آرایه را به عنوان رشته می خواهید استفاده کنید که در این صورت باید شماره کلید مورد نظر را تنظیم کنید تا مقدار آن دریافت شود، به فرض:
myArray[0]
نویسنده: شیوا
زمان: ۲۰:۴۷:۳۵ - تاریخ: ۱۳۹۴/۱۰/۲۳
سلام
ببخشید من میخوام یه آرایه دوبعدی ایجاد کنم توی جاوا اسکریپت و توی یه بعد آرایه سوالا و بعد دیگه جوابای سوالا رو بریزم. میشه کمکم کنید؟ لطفا
پاسخ: 
سلام
در جاوا اسکریپت نمی توانید برای کلیدها مقادیر غیر عددی در نظر بگیرید، البته نمی دانیم دقیقا هدفتان چیست، اما می توانید به جای این روش، از حالت آبجکت شبیه نمونه زیر استفاده کنید:
<script type="text/javascript">
var object = {};
object['question'] = ["Name", "Age"];
object['answer'] = ["Ali", "20"];
alert(object.question[0]);
alert(object.answer[0]);
</script>
نویسنده: محسن
زمان: ۱۵:۴۸:۰۷ - تاریخ: ۱۳۹۵/۱۲/۱۲
سلام
یک آرایه چند بعدی داشتم مثل این
var blue=[[24,33,42,250],[29,42],[42,39,54,43]];
میخواستم مقدار مثلا 29 و 42 رو جمع بزنم جای این دو مقدار مقدار جمعشون رو بنویسم
خودم یه تابع نوشتم نمیدونم چجوری این حرکتو تو تابع خودم پیاده سازیش کنم تابع خودم برای جمع هر عدد با خودش شده
<script type="text/javascript">
var blue=[[24,33,42,250],[29,42],[42,39,54,43]];
function arraySum(arr) {
var i, j, sum=0;
for (i = 0; i < arr.length; i++) {
document.write("<div class='row'>");
for (j = 0; j < arr[i].length; j++) {
sum += parseInt(arr[i][j]);
}
document.write("<span class='eli'>" + sum + "</span>");
sum = 0;
document.write("</div>");
}
}
arraySum(blue);
</script>
ممنون میشم راهنمایی کنین
پاسخ: 
کد مطابق با توضیحات شما ویرایش و اصلاح شد!
نویسنده: masoud
زمان: ۰۹:۵۰:۰۸ - تاریخ: ۱۳۹۶/۰۵/۲۳
سلام لطفا منو راهنمایی کنید. کد تولید اعداد تصادفی بدون تکرار با جاوا اسکریپت نیاز دارم در محدوده دو عدد مشخص مثلا یک تا نه
پاسخ: 
برای ایجاد اعداد تصادفی بدون تکرار با جاوا اسکریپت می توانید از نمونه کد زیر استفاده کنید:
<script type="text/javascript">
function randomNumbers() {
var array = [1,2,3,4,5,6,7,8,9];
var i = array.length, j = 0, temp;

while(i--) {
j = Math.floor(Math.random() * i);
temp = array[i];
array[i] = array[j];
array[j] = temp;
}

return array;
}

window.onload = function(){
var rand_nums = randomNumbers();
var result = '';

for(var i = 0; i < rand_nums.length; i++){
result += rand_nums[i] + '<br>';
}

document.getElementById('result').innerHTML = result;
}
</script>
<div id="result"></div>
نویسنده: مسعود
زمان: ۰۸:۱۲:۰۷ - تاریخ: ۱۳۹۶/۰۵/۲۵
سلام تشکر یابت آموزش عالی شما این کدی که ارایه کردین خیلی خوب بود ولی منظور من نشان دادن فقط یک عدد تصادفی باشه نمیخوام همه با هم نشون داده بشن. یعنی هر بار صفحه نشون داده شد یک عدد دیده بشه که در مرحله قبل دیده نشده است. سپاسگزارم از توجه شما
پاسخ: 
نوشتن این کد پیچیدگی های خاص خود را دارد، از جمله اینکه در وب باید برای نگهداری موقت اطلاعات در مرورگر از کوکی در جاوا اسکریپت استفاده کنید، مانند نمونه زیر:
<script type="text/javascript">
function randomNumbers() {
var array = [1,2,3,4,5,6,7,8,9];
var i = array.length, j = 0, temp;

while(i--) {
j = Math.floor(Math.random() * i);
temp = array[i];
array[i] = array[j];
array[j] = temp;
}

return array;
}

function createCookie(name, value, days) {
var expires = '';

if(days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 *1000));
expires = '; expires=' + date.toUTCString();
}

document.cookie = name + '=' + value + expires + '; path=/';
}

function readCookie(name) {
var nameEQ = name + '=';
var ca = document.cookie.split(';');

for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while(c.charAt(0) == ' ') {
c = c.substring(1, c.length);
if(c.indexOf(nameEQ) == 0) {
var result = c.substring(nameEQ.length, c.length);

if(result == ''){
return null;
}

return result;
}
}
}

return null;
}

function eraseCookie(name) {
createCookie(name, '', -1);
}

window.onload = function(){
var rand_nums, result;

if(readCookie('my_rand_num') == null) {
rand_nums = randomNumbers();
} else {
rand_nums = readCookie('my_rand_num').split(',');
}

result = rand_nums[Math.floor(Math.random() * rand_nums.length)];

for(var key in rand_nums) {
if(rand_nums[key] == result) {
rand_nums.splice(key, 1);
}
}

createCookie('my_rand_num', rand_nums, 1);

document.getElementById('result').innerHTML = result;
}
</script>
<div id="result"></div>
ساختار این کد تقریبا ساده است، ابتدا کل اعداد تصادفی در یک آرایه ذخیره و در اولین فراخوانی یک مقدار به خروجی ارسال می شود، سایر اعداد در کوکی نگهداری می شوند، در فراخوانی های بعدی یک مقدار دیگر این بار از کوکی گرفته می شود و آن مقدار پس از نمایش از محتوای فعلی کوکی حذف می شود، همین روند تا جایی ادامه پیدا می کند که کوکی دیگر محتوایی برای نمایش نداشته باشد، در این وضعیت مجددا کوکی جدید با اعداد تصادفی جدید ایجاد می شود...
نویسنده: مسعود
زمان: ۱۱:۲۷:۱۴ - تاریخ: ۱۳۹۶/۰۶/۱۴
عرض سلام و خسته نباشید این کد داخل مرورگر امتحان کردم عالی بود اما متاسفانه برنامه ای که از آن استفاده میکنم امکان ذخیره در کوکی ندارد و بصورت آفلاین عمل میکند آیا امکان ذخیره اعداد در آرایه دوم بجای کوکی وجود دارد؟ و اینکه میتوان دستور خروجی از document write استفاده کرد. سپاس از توجه شما
پاسخ: 
کارکرد کوکی به این است که در فراخوانی مجدد صفحه می توان اطلاعات ذخیره شده قبلی را دریافت کرد، اگر برنامه شما امکان ذخیره سازی فایل یا محتوا در دیتابیس را داشته باشد می توانید کار کوکی را به شکل دیگری شبیه سازی کنید، در مورد متد document.write نیز بستگی به پشتیبانی برنامه شما دارد، در حالت معمول و در مرورگرها مشکلی برای استفاده از این متد نیست.
نویسنده: جعفر
زمان: ۲۰:۱۷:۲۱ - تاریخ: ۱۳۹۶/۰۶/۲۶
سلام. من میخام‌ کارهایی مثل حذف کردن یک عنصر از بردار و اضافه کردنش به جای دیگه ای از بردار رو کد کنم و کارهای دیگه. میشه یه منبع برای آموزش این کدنویسی در جاوا اسکریپت معرفی کنین؟ مرسی
پاسخ: 
متاسفانه منبع مناسبی برای آموزش این مبحث در اختیار نداریم، صرفا کلاس ها و توابع آماده برای این مورد وجود دارد که با جستجو در وب می توانید آنها را پیدا کنید.
https://www.google.com/search?q=vector+to+code+js
نویسنده: صادق
زمان: ۱۷:۳۱:۲۹ - تاریخ: ۱۳۹۶/۰۸/۰۶
سلام دوست عزیز
در برنامه چند تا سوال 4 گزینه ای داریم که گزینه ها به صورت radio button است و وقتی کاربر دکمه ثبت را میزنه جوابهای انتخاب شده از طریق جاوا اسکریپت دریافت شده و داخل یک آرایه (MyArray) قرار میگیره و بعد از طریق ajax داخل دیتابیس میشینه، حالا اگر دو کاربر دقیقا همزمان دکمه ثبت را بزنند ممکنه اطلاعات داخل آرایه عوض بشه ، چون جواب بعضی (در حد 4 نفر از 50 نفر شرکت کننده) از کاربرا تو دیتابیس عدم انتخاب گزینه (صفر) درج شده است.
پاسخ: 
سوالتان کمی مبهم است!، اگر برای هر کاربر سشن و کوکی خاص آن را تعریف کنید نباید تداخلی بین کاربران مختلف رخ دهد و اطلاعات هر کاربر با توجه به مشخصات او به صورت جداگانه ثبت می شود، در واقع با توجه به توضیحات ارائه شده به نظر مشکل از نحوه تعریف ساختار کلی برنامه شما است!
نویسنده: صادق
زمان: ۱۰:۵۷:۳۷ - تاریخ: ۱۳۹۶/۰۸/۰۷
سلام دوست عزیز در ادامه سوال قبلیم کد برنامه را براتون میزارم لطفا شما بررسی نمایید مشکلش چیه.
برای نمونه فقط کد یه سوالا میزارم
حذف شد
پاسخ: 
کدها بر اساس سشن نوشته شده اند و به نظر نمی رسد مشکل از این مورد باشد، اطلاعات هر کاربر به صورت مستقل پردازش می شود لذا اشکال کار باید از مورد دیگری باشد، ممکن است کاربر به نحوی بدون انتخاب گزینه، فرم را ارسال کند و مواردی از این قبیل، در هر حال برای بررسی بیشتر باید دسترسی آنلاین به برنامه و امکان تست وجود داشته باشد.
نویسنده: مهدی
زمان: ۱۷:۵۴:۲۲ - تاریخ: ۱۳۹۶/۱۰/۲۰
سلام یه پروژه به من دادن اما نمیتونم انجامش بدم خواهش میکنم کمکم کنید
ساخت یک آرایه با هزار عنصر و جمع مقادیر آنها
پاسخ: 
می توانید از نمونه کدهای زیر الگوبرداری کنید:
<script type="text/javascript">
var my_array = new Array();
var array_sum = 0;

for(var i = 0; i < 1000; i++){
my_array[i] = i;
array_sum += i;
}
alert('Array Length:' + my_array.length + ' - Array Sum:' + array_sum);
</script>
نویسنده: f j
زمان: ۱۱:۳۳:۵۳ - تاریخ: ۱۳۹۶/۱۱/۲۹
سلام. منبع برای آموزش موارد بیشتر و همچنین ماتریس در جاوا اسکریپت سراغ دارین؟
مرسی
پاسخ: 
با یک جستجوی ساده منابع زیادی پیدا خواهید کرد، چند نمونه:
https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Matrix_math_for_the_web

https://www.robinwieruch.de/linear-algebra-matrix-javascript
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ کوتاه و مختصر داده خواهد شد!
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.





3 × 3
 refresh
آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
form مهدی
در:
سلام من از کد زیر استفاده کردم ولی وقتی که اعمال میشه کل css های سایتم میپره.. چه باید بکنم
۰۹:۵۵:۵۰ ۱۳۹۹/۰۴/۲۳

form سلماسی
در:
سلام ایا اگر از وبسایت شخصی کسی بازدید کنیم صاحب وبسایت شماره ی ما را می بیند
۲۱:۳۱:۵۳ ۱۳۹۹/۰۴/۲۲

form mahdi
در:
سلام استاد اگه براتون زحمتی نیست یه نگاه دیگه بهش بندازید ، الان ریموو ادیت درست هستن فقط برای نمایش کلیشون که وقتی رفرش میکنیم...
۱۹:۱۳:۱۵ ۱۳۹۹/۰۴/۲۲

form mahdi
در:
سلام استاد عزیز ، میتونید یه نمونه که فقط با جاوا اسکریپت کار شده نه با فریمورکاش بهم معرفی کنید ببینم؟ من هرچی گشتم پیدا...
۱۴:۴۶:۲۴ ۱۳۹۹/۰۴/۲۲

form mahdi
در:
سلام استاد عزیز و گرامی ، یه دفتر چه یادداشت با localstorage میخوام بنویسم ولی مشکل دارم، دو تا سوال دارم ممنون میشم راهنماییم...
۱۲:۰۵:۰۷ ۱۳۹۹/۰۴/۲۲

form اریا
در:
سلام و درود بزرگوار چه دستوری باید بنویسیم تا فقط مقدارهای خاصی از ارایه بتونیم نمایش بدیم. مثلا یک ارایه 6 خونه ای...
۱۶:۴۷:۳۱ ۱۳۹۹/۰۴/۲۰

form کافه کتاب
در:
سپاس خیلی وقت بود دنبالش بودم مرسی از سایت عالیتون
۱۴:۵۱:۴۳ ۱۳۹۹/۰۴/۲۰

form سجاد
در:
دمتون گرم. خیلی زحمت کشیدید
۱۳:۴۳:۱۱ ۱۳۹۹/۰۴/۲۰

form KhashayarPrk
در:
سلام. میخوام الگو تمام کلمات داخل پرانتز رو بدون پرانتز بریزه ارایه با این کد فقط یک پرانتز رو جواب میده.
۱۳:۱۳:۴۷ ۱۳۹۹/۰۴/۲۰

form Oliver
در:
چطوری دستور background رو برای جدلمون عکسش رو تنظیم کنیم و بهش طول و عرض بدیم
۱۶:۰۷:۱۷ ۱۳۹۹/۰۴/۱۸

form محمد
در:
با عرض سلام ببخشید چطوری میتونم واسه اشتراک کاربر انقضا بزارم مثلا یک ماه داخل دیتابیس ردیف تایم رو درست کردم البته تاریخ رو تبدیل...
۱۹:۱۴:۵۹ ۱۳۹۹/۰۴/۱۵

form آیدا
در:
سلام من در حال طراحی با html هستم اما طبق فیلم آموزشی پیش میرم از یه جایی به بعد هم تغییرات اعمال نمیشه...
۲۲:۴۷:۴۴ ۱۳۹۹/۰۴/۱۴

form علی
در:
سلام اگه میشه یه تکه کدی بفرستید که کاربر نتونه عکس مورد نظر رو دانلود کنه و با نگه داشتن روی عکس فقط لینکو ببینه...
۰۹:۳۰:۴۹ ۱۳۹۹/۰۴/۱۴

form sina2000
در:
با سلام و خسته نباشید طبق کد زیر استفاده میگه متغیر Pdc برای PDO است لطفا نمونه کد برای لایبرری...
۱۵:۰۳:۵۱ ۱۳۹۹/۰۴/۱۳

form محمد امین
در:
سلام ممنون از مطلبتون ببخشید من یه سایتی با شی گرایی کامل زدم الان میخوام آدرسشو بهینه کنم آدرس الان من به این صورته:...
۱۸:۲۸:۲۴ ۱۳۹۹/۰۴/۱۱
form ترنم
در:
سلام وقتتون بخیر ببخشید من کدهای مربوط منو و زیر منو رو نوشتم ولی موقع اجرا منوی اصلی رو میاره ولی زیر منوها رو...
۱۱:۰۶:۲۹ ۱۳۹۹/۰۴/۱۱
form ا
در:
سلام چرا وقتی مطالب مربوط که تو وبلاگم هست رو جستجو میکنم نمیاره ؟؟؟
۲۰:۳۱:۰۸ ۱۳۹۹/۰۴/۰۷
form amir
در:
سلام من اگه بخوام با وارد کردن یه id داخل یک text کل اون ردیف پاک بشن باید چه کنم مثلا یک text دریافت میکنم...
۰۱:۴۸:۰۵ ۱۳۹۹/۰۴/۰۷
form محمدباقر حسیبیان
در:
من این مشکل برام پیش اومده که موقع ورود به پروژه م توی لوکال هاست wamp صفحه سفیده و هیچی رو نشون نمیده و کد...
۱۶:۴۲:۳۸ ۱۳۹۹/۰۴/۰۶
form ...
در:
سلام دو سایت نوشته ای مربوط به من رو چند سال قبل لینک دانلود قرار دادن من ازشون خواستم بردارنش ولی اینکارو نکردن سایت...
۱۷:۲۶:۴۲ ۱۳۹۹/۰۴/۰۵
form مجتبی
در:
سلام میشه یک کد جاوا رو به php تبدیل کرد تا لود سایت سریع تر بشه؟
۱۳:۰۴:۲۳ ۱۳۹۹/۰۴/۰۴
form متین
در:
سلام ؛ من تازه شروع به یادگیری کردم ؛ مطلب بسیار کاربردی بود ؛ ممنون از شما دوست عزیز.
۰۱:۵۰:۰۵ ۱۳۹۹/۰۴/۰۴
form mahdi
در:
سلام استاد عزیز و گرامی امیدوارم که حالتون خوب باشه ، اگه براتون ممکنه لطفا یه آموزش خوب در زمینه وردپرس بهم معرفی کنید ،...
۲۱:۴۸:۱۳ ۱۳۹۹/۰۴/۰۳
form امید
در:
در برنامه نویسی کاربر با چه دستوری میتواند به صفحه اصلی برگردد
۱۹:۰۶:۵۶ ۱۳۹۹/۰۴/۰۳
form ali
در:
با سلام من یک پروژه طراحی کردم میخوام که وقتی کاربر روی ادامه مطلب کلیک کرد در خود صفحه بقیه مطالب را ببینه...
۱۸:۴۷:۲۲ ۱۳۹۹/۰۴/۰۳
form علی
در:
سلام و تشکر از زحمات ارزشمند شما احتراما بنده امروز از یک شماره تلفن ثابت از طریق یک رایانه و یک موبایل به طور...
۱۸:۰۱:۱۰ ۱۳۹۹/۰۴/۰۳
form oscar
در:
درود. اگر بخوایم در نمایش تاریخ و زمان که به صورت لحظه ای خودش در صفحه رفرش میشه، فقط عبارت " Mon Jun 22 2020...
۱۵:۵۹:۳۲ ۱۳۹۹/۰۴/۰۲
form علی
در:
با سلام چطور میشه فقط یک صفحه مورد نظرمون رفرش بشه نه همه صفحات سایت
۰۰:۰۳:۴۱ ۱۳۹۹/۰۳/۳۱
form Farzad
در:
الان وقتی فایل رو میخواد دانلود بکنه از خودش فایل میسازه ، به این صورت یعنی بعد از پوشه file هر پوشه ای باشه...
۱۸:۵۶:۲۱ ۱۳۹۹/۰۳/۳۰
form Farzad
در:
سلام ، خسته نباشید من فایل هایی که در هاست میزارم به این شکل هست: یعنی مشخص نیست فایل ها تو چه پوشه...
۱۳:۳۳:۴۰ ۱۳۹۹/۰۳/۳۰
form شیما طیبی
در:
سلام خیلی مطلب مفیدی بود . همیشه به وبلاگ نویسی به چشم یه کار خسته کننده نگاه میکردم ولی خب یه مقدار نظرم تغییر کرد....
۲۳:۵۲:۳۲ ۱۳۹۹/۰۳/۲۹
form احسان
در:
سلام من یک کد اسکریپت دارم که به صورت عددی تبدیل شده است. میخواستم بپرسم چطوری میتونم اسکریپت به حالت اولیه نوشته شده برگردانم و...
۲۱:۰۲:۱۳ ۱۳۹۹/۰۳/۲۷
form علی
در:
ممنون از پاسختون اما روش بالا جهت دانلود فایل کاربرد داره . من میخواستم به صورت استریم ویدئو پخش بشه اما آدرس مستقیم ویدئو...
۰۰:۳۷:۴۶ ۱۳۹۹/۰۳/۲۷
در انتظار بررسی: ۴