کد جاوا اسکریپت در هم ریزی (shuffle) آرایه ها

دسته بندی: جاوا اسکریپت
زمان مطالعه: 2 دقیقه
۰۵ اردیبهشت ۱۳۹۲

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

در کدی که امروز به شما معرفی می‌کنیم می‌خوایم ارایه‌های جاوااسکریپت رو به هم بریزیم و یک ترتیب تصادفی و رندم به مکان اعضای ارایه‌ها بدیم .

تابع جاوااسکریپت در هم ریزی ارایه :

در زیر تابعی رو برای شما آوردیم که یک متغیر آرایه ای رو به عنوان ورودی دریافت می‌کنه و ارایه ی به هم ریخته رو بر می‌گردونه . منظور از به هم ریختن جا به جایی اعضای آرایه به صورت تصادفی هست :

function Shuffle(Arr) {
var j, x, i;
for (i = Arr.length; i > 0;) {
j = parseInt(Math.random() * i);
x = Arr[--i];
Arr[i] = Arr[j]
Arr[j] = x
}
return Arr;
}

استفاده از این تابع هم که بسیار سادست . در مثال زیر یک آرایه داریم که 10 عضو داره و به ترتیب اعضای 0 تا 9 رو در خودش داره . کافیه این آرایه رو به تابع Shuffle پاس بدیم تا ارایه ی به هم ریخته رو به ما بده . در این مثال ارایه ی به همر ریخته شده رو در Arr2 نگه داشتیم . جالب اینجاست که با توجه به استفاده از تابع رندم هر بار که این کد رو اجرا کنید یک به همریزی جدید به شما میده :

var Arr1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
Arr2=Shuffle(Arr1);

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

function printArray(Arr) {
document.write('<br>');
for (i = 0; i < Arr.length; i++) {
document.write(Arr[i] + ' ');
}
document.write('<br>');
}

در آخر هم کل مثال رو برای شما آوردم که به راحتی می‌تونید اونو اجرا کنید :

<script type="text/javascript">
function Shuffle(Arr) {
var j, x, i;
for (i = Arr.length; i > 0;) {
j = parseInt(Math.random() * i);
x = Arr[--i];
Arr[i] = Arr[j]
Arr[j] = x
}
return Arr;
}

function printArray(Arr) {
document.write('<br>');
for (i = 0; i < Arr.length; i++) {
document.write(Arr[i] + ' ');
}
document.write('<br>');
}

var Arr1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
Arr2=Shuffle(Arr1);
printArray(Arr2);
</script>

فایل مثال رو هم براتون گذاشتم . می‌تونید دانلود و اجرا کنید :

چه امتیازی به این مقاله می دید؟
نویسنده لقمان آوند
بیش از 15 سال هست که برنامه نویسی می کنم و از بین همه زبون هایی که کار کردم جاوا، اسمبلی و php رو دوست دارم. دانشجوی دکترای نرم افزارم و توی دانشگاه روی پردازش بیگ دیتا و پردازش موازی کار کردم و عاشق چالش از هر نوعیش هستم! سون لرن مثل بچه منه که 12 سال براش وقت گذاشتم، اینجا همه تلاش می کنیم از شروع یادگیری تا ورود به بازر کار حوزه برنامه نویسی و IT همراهتون باشیم.

نظرات کاربران

عالیه

سلام من تازه کارم این کد منه اینجا suflle هیچ مقداری نگرفته من سر در گم شدم میشه برام توضیح بدیدplease 🙁
function startGame()

{

shuffle();

gtime = 0;

gmoves = 0;

tickTime();

gintervalid = setInterval(“tickTime()”,1000);

}

کیوان علی محمدی

سلام توی این کد تابع shuffle حتما باید یه آرایه بگیره دوست عزیز،شما این کد رو چطوری نوشتی؟

ali111

سلام بر شما آقای لقمان آوند
واقعا دستتون درد نکنه از اینکه اینقدر خدمات در اختیار ما گذاشتید .من تقریبا 30 صفحه ی وبتونو مرورکردم خیلی آموزش های خوبی بود.من یه مقداری با زبان سی اس اس و مقدار زیادی با اچ تی ام ال آشنایی دارم.هر وقت می خواستم به طور حرفه ای آموزش سی اس اس و جاوا اسکریپت رو شروع کنم سایت شما رو انتخاب میکنم.
فقط یه چیزی هست من یکی از ابزار های شمارو در وبلاگم قرار دادم وقتی که صفحه باز میشه بعضی وقت ها هرجا کلیک کنی تو پنجره ی جدید سون لرن باز میشه!!!
در پناه حق باشید یا علی 😳

morteza

نه تو پوشه اسپم ها هم نیست !

morteza

ممنون آقا لقمان از آموزش خوب تون … راستی آقا لقمان برا من هر از گاهی ایمیل نمی یاد که سون لرن بروز شده گرچه من هر روز سر می زنم 😛

لقمان آوند

سلام
مرسی ، تو پوشه اسپمات چک کن ببین اونجا نمیرن …

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :