لطفا همگی جواب بدید(چند تمرین جالب برای کار با ارایه ها )

پرسیده شده
فعالیت 1554 روز پیش
دیده شده 1113 بار
0

دوستان من برای خودم چندتا مسیله تعریف کردم و حلشون کردم دلم نیومد که به اشتراک نزارمش این مسایل رو .... لطفا این مسایل رو شما هم حلش کنید و هر سوالی که داشتید حتما بپرسید...

  1. تابعی بنویسید که هر ارایه ای که در ورودی بگیرد مقدار اخرین عنصر ان را به عنوان خروجی بدهد
  2. تابعی بنویسید که با دریافت ورودی از نوع ارایه اون ارایه رو صعودی و نزولی  مرتب کند
  3. تابعی بنویسید که با دریافت ورودی از نوع ارایه مجموع همه ی عناصرارایه را برگرداند
  4. تابعی بنویسید که با دریافت ورودی از نوع ارایه بزرگترین و کوچکترین مقادیر را بازکرداند
  5. تابعی بنویسید که با دریافت ورودی از نوع ارایه و یک مقدار اون مقدار اگ تو ارایه بود حدفش کنه و اگه وجو نداشت کاری نکنه و در اخر ارایه را برگردونه

هر کسیم که حل کرد اگه دوست داشت حلشو اینجا بزاره تا بقیه هم استفاده کنند

جواب همه ی این سوالات هم تا فردا شب ساعت 10 میزارم تا اون موقع خودتون رو به چالش بکشید و سعی کنید خوتون حلش کنید

اگرم بازم مسیله خواستید بگید تا طراحی کنم براتون

 

فایل پیوست

mostafa hedayat
mostafa hedayat

22 آبان 98

0
حذف شده

دوستانی هم که نمیدونن که تابع چیه این مطلب رو بخونن کار با توابع

فایل پیوست

mostafa hedayat

توسط

mostafa hedayat

22 آبان 98

حذف شده
سلام خیلی عالیه ممنون از شما
zahra khazaei

23 آبان 98

حذف شده
خواهش میکنم :)
mostafa hedayat

23 آبان 98

حذف شده
خیلی ها هنوز با Loop ها اشنایی ندارن
amir yaghoobzadeh

23 آبان 98

حذف شده
درسته ولی خب خیلی ها هم اشناییت دارن و باید بیشتر تمرین کنن.. و بقیه کسانیم که اشناییت ندارن میتونن با تمرین یاد بگیرم...نباید منتظر استاد باشیم که یاد بده خودمونم باید تلاش کنیم
mostafa hedayat

23 آبان 98

0
حذف شده

سلام به نظرم خیلی کار خوبیه که دوستان تمریناتشون را به اشتراک بذارن و خیلی کمک میکنه به درک عمیق تر مطالب:

و اما جواب سوالات:

////////////////////////////////////////////////////////////
//مقدار آخرین اندیس آرایه را برمیگرداند
var samplearray=['soroosh','mortazavi','js','html','css','7learn' ];

console.log(valueOflastIndexOfArray(samplearray));

function valueOflastIndexOfArray( array){
    return array[array.length-1];
}
////////////////////////////////////////////////////////////
//رشته ها را به ترتیب حروغ الفبا مرتب میکند
var stringArray=['a','b','a','d','c','h','v','f','z'];
console.log('sort strings : ',srotStringArray(stringArray) );

function srotStringArray(array){

    return array.sort();

}
////////////////////////////////////////////////////////////
//مرتب سازی سعودی آرایه عددی
var numericArray=[1,4,6,13,2,56,32,100,73,5,4];
console.log(sortAccendingNumericArray(numericArray));

function sortAccendingNumericArray(numericArray){
    return numericArray.sort(function(a,b){return a-b});
}
////////////////////////////////////////////////////////////
//مرتب سازی نزولی آرایه عددی
var numericArray=[1,4,6,13,2,56,32,100,73,5,4];
console.log(sortAccendingNumericArray(numericArray));

function sortAccendingNumericArray(numericArray){
    return numericArray.sort(function(a,b){return b-a});
}
////////////////////////////////////////////////////////////
// مجموع تمام عناصر آرایه عددی
var numericArray=[10,5,5,10,20,50,30,100,70,10,40];

console.log('sum of numeric array is : ', sumOfNumericArray(numericArray));

function sumOfNumericArray(numericArray){

    var sum=0;
    for (var index = 0; index < numericArray.length; index++) {
        sum +=numericArray[index];
    }
    return sum;

}
////////////////////////////////////////////////////////////
//برگرداندن بزرگترین و کوچک ترین عنصر آرایه
var numericArray1=[1,4,6,13,2,56,32,100,73,5,4];

var b=lowAndHighValuesOfArray(numericArray1);

console.log('low value is: ',b[0],' highest value is: ',b[1]);

function lowAndHighValuesOfArray(array){
    //اول آرایه را مرتب میکنیم بعد اولین خانه ی آرایه کوچکترین عنصر و آخرین خانه بزرگترین است
    var sortedArray=array.sort(function(a,b){return a-b});
    return [sortedArray[0],sortedArray[sortedArray.length-1]];
}
////////////////////////////////////////////////////////////
//حذف یک مقدار خاص از یک آرایه:
//به عنوان مثال میخواهیم کلمه ی 
//sample 
//را از آرایه حذف کنیم
var array1=[1,2,5,6,'sample','soroosh','apple','sample',2,4,6,8,'sample'];
sampleValue='sample';

console.log('new array is: ',dropSomeThingFromArray(array1,sampleValue));

function dropSomeThingFromArray(array,sampleValue){

    for (var index = 0; index < array.length; index++) {
        if(array[index]==sampleValue){
            array.splice(index,1);
        }
    }
    return array;
}
////////////////////////////////////////////////////////////

 

فایل پیوست

Soroosh

توسط

Soroosh

23 آبان 98

حذف شده
خیلی ممنون که وقت گزاشتی و حل کردی :) جواب هاتم درست بودن اگه اجازه هست فقط چندتا نکته بگم توی قسمتی که بزرگترین و کوچترین مقدار رو برگردوندی اگه بصورت آبجکت برمیگردوندی قابل فهم تر بود البته اینجا مشکلی پیش نمیاد ولی تو پروژه های بزرگتر یه چالش میشه
mostafa hedayat

23 آبان 98

حذف شده
خواهش میکنم ممنون از خودت که این سنت حسنه را بنا گذاشتی :) فقط یه موضوعی این که چرا با وجود این که آرایه خودش یه نوع آبجکت حساب میشه تو پروژه های بزرگتر این موضوع چالش میشه؟
Soroosh

23 آبان 98

0
حذف شده

مرسی بابت طراحی تمرین. لطفا هر جلسه تکرار کنید. ممنون

const array = [22, 11, 33, 44, 55];

//تابعی بنویسید که هر ارایه ای که در ورودی بگیرد مقدار اخرین عنصر ان را به عنوان خروجی بدهد

function lastElement(element) {
    const last = element.length - 1;
    console.log(element[last]);
};

lastElement(array); //55

//تابعی بنویسید که با دریافت ورودی از نوع ارایه اون ارایه رو صعودی و نزولی  مرتب کند

function sortAll(element) {
    const ascending = element.sort(function(a, b) { return a - b;});
    console.log(ascending);

    const descending = element.sort(function(a, b) {return b - a;});
    console.log(descending);
};

sortAll(array); // [11, 22, 33, 44, 55] ,  [55, 44, 33, 22, 11]

//تابعی بنویسید که با دریافت ورودی از نوع ارایه مجموع همه ی عناصرارایه را برگرداند

function sumOfAll(element) {
    let sum = 0;
    for (el of element) {
        sum += el;
    }
    console.log(sum);
};

sumOfAll(array); //165

//تابعی بنویسید که با دریافت ورودی از نوع ارایه بزرگترین و کوچکترین مقادیر را بازکرداند

function maxANDmin(element) {
    const max = element.reduce(function (a, b) {return Math.max(a, b);})
    console.log(max);

    const min = element.reduce(function (a, b) {return Math.min(a, b);})
    console.log(min);
};

maxANDmin(array); //55 , 11

//تابعی بنویسید که با دریافت ورودی از نوع ارایه و یک مقدار اون مقدار اگ تو ارایه بود حدفش کنه و اگه وجو نداشت کاری نکنه و در اخر ارایه را برگردونه

function elementFinder(element, number) {
    const indexCheck = element.indexOf(number);
    if (indexCheck !== -1) {
        element.splice(indexCheck, 1);
    };
    console.log(element);
};

elementFinder(array, 55); //[44, 33, 22, 11]

 

فایل پیوست

Babak Khademi

توسط

Babak Khademi

23 آبان 98

0
حذف شده

پاسخ صحیح سوالات

//  ***********************answer 1 ***************************
    var myArray1 = [9, 5, 3, 4, "mostafa", "hedayat", true,{ name: "mostafa" }, null, 7, 9, 12];
    function getLastvalue(array) {
      return array[array.length - 1]; // -1 for zero base
    }
    console.log(getLastvalue(myArray1)); // output: 12

    //  ***********************answer 2 ***************************
    var myArray2 = [9, 5, 3, 4, 34, 8, 75, 7, 9, 12];
    function sort(array) {
      // for numric sort
      // صعودی
      var ascendingSort = [
        ...array.sort(function(a, b) {
          return a - b;
        })
      ];
      console.log(ascendingSort);
      // نزولی
      var descendingSort = [
        ...array.sort(function(a, b) {
          return b - a;
        })
      ];
      return {
        ascendingSort: ascendingSort,
        descendingSort: descendingSort
      };
    }
    console.log(sort(myArray2)); //output: {ascendingSort: [3, 4, 5, 7, 8, 9, 9, 12, 34, 75],descendingSort: [75, 34, 12, 9, 9, 8, 7, 5, 4, 3]}

    //  ***********************answer 3 ***************************
    function sumArray(array) {
      var sum = 0;
      array.forEach(value => {
        sum += value;
      });
      return sum;
    }
    console.log(sumArray(myArray2)); //output:166

    //  ***********************answer 4 ***************************
    // get max
    function getMinMax(array) {
      return {
        max: Math.max.apply(null, array),
        Min: Math.min.apply(null, array)
      };
    }
    console.log(getMinMax(myArray2)); //output: {max: 75, Min: 3}

    //  ***********************answer 5 ***************************

    function removeValue(array, value) {
      var indexvalue = array.indexOf(value);
      if (indexvalue !== -1) {
        array.splice(indexvalue, 1);
      }
      return array;
    }
    console.log(myArray2);
    console.log(removeValue(myArray2, 8));

 

فایل پیوست

mostafa hedayat

توسط

mostafa hedayat

23 آبان 98

حذف شده
سلام اقای هدایت ای دی تلگرامتو میدی دوست عزیز؟
Hamid babazadeh

24 آبان 98

حذف شده
بله عزیز بفرما @mostafa_hedayat
mostafa hedayat

24 آبان 98

0
حذف شده
سلام . ممنون از مساله ها خوبتون . 

<pre class=“hljs php”>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //اولین تمرین اینه که تابعی بنویسیم که آخرین عنصر آرایه گرفته شده رو نشون بده
      function getLastElement(array) {
        console.log(array.slice(-1)[0]);
        //در متد اسلایس اگه منفی وارد کنیم یعنی تعداد عناصری که میخوایم از آخر جداکنیم
        // و چون یک آرایه برمیگردونه تک عضوی اونو با اندیس صفر چاپ میکنیم
      }
      getLastElement([1, 2, 3, 4, 5]);

      ///////////////////////////////////////////////////////////////

      //تمرین دوم اینه که تابعی بنویسید که آرایه رو نزولی و صعودی مرتب کنه
      //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
      //لینک بالا مرجع نهاد موزیلا برای توضیح متد sort هست

      //تابع سرت به صورت پیش فرض صعودی مرتب میکنه
      // و این نکته رو باید مدنظر داشته باشیم که اگر اعداد به صورت استرینگ بدیم
      //بر اساس UTF-16 مرتب میکنه
      //یعنی برای اعداد رشته ای جواب نمیده چون  رو کمتر از
      //80 < 9
      //چون اول هشت رو میبینه و میگه که از کارکتر ۹ ارزشش پایین تره

      let numbers = [4, 2, 5, 1, 3];
      numbers.sort((a, b) => a - b);
      console.log("صعودی", numbers);

      //اگه در مقایسه a , b
      // منفی برگردونه یعنی
      //a <b     pas a comes first yani  sort a to an index lower than b
      // اگه مثبت برگردونه
      //a > b
      // pas b comes first   yanu sort b to an index lower than b
      // اگه صفر برگردونه که جای دوتاشون رو تغییر نمیده ولی با بقیه عناصر باز مقایسه میشن

      let numbers2 = [4, 2, 5, 1, 3];
      numbers2.sort((a, b) => b - a);
      console.log("نزولی", numbers2);

      //متد reverse
      //هم عناصر رو برعکس میکنه

      console.log(numbers2.reverse());

      /////////////////////////////////////////////////////////////////////
      //سومین تمرین اینه که تابعی بنویسیم که آرایه رو بگیره  و مجموع عناصرش رو بهمون بده

      function sum(array) {
        var sum = 0;

        for (let index = 0; index < array.length; index++) {
          sum += numbers[index];
        }
        return sum;
      }
      console.log(sum(numbers));

      // روش دیگه برای محاسبه عناصر یک آرایه استفاده از متد reduce هست
      //https://codeburst.io/javascript-what-the-heck-is-a-callback-aba4da2deced
      // لینک بالا توضیح در مورد کال بک ها در جاوااسکریپت
      //ترجمه شدش در سون لرن در لینک پایین
      //https://7learn.com/tutorials/all-you-need-to-know-about-array-reduce-method-in-javascript

      console.log(
        numbers.reduce((zarf, teke_jari) => {
          return zarf + teke_jari;
          //کال بک فانکشن ما در هرمرحله به ازاری هر عنصر آرایه اجرا میشه
          //در هر مرحله  مثلا تعداد تیکه های میوه رو میزاره تو ظرف
          // و مجموع تیکه های میوه داخل ظرف رو برمیگردونه
          // در مرحله آخر برای عنصر آخر وقتی تعداد تیکه هارو حساب کرد بهش میگیم اعلامم کن
          // گذاشتن ریترن به اون خاطر هست
          //اگه پارامتر بعد از کال بک رو هم بدیم بهش اشتباه میشه
          // به عنوان اینشیال ولیو ظرف یا تعداد تیکه های اولیه داخل ظرف حسابش میکنه و مجموع درست درنمیاد
          //numbers.reduce((zarf, teke_jari) => {
          // return zarf + teke_jari},2);  ====>  اندازه ی ۲ تا بیشتر حساب میکنه غلط میشه
        })
      );
      /*
               اگر اینشیال ولیو در متد ردیوس داده شود
               مقدار آغازین اکیوملیتور مساوی با آن میشود
               و مقدار کارنت آیتم هم از عنصر اول آرایه شروع میشود
               //////////////////////////////////////////////////
               اگر اینشیال ولیو داده نشود
               مقدار آغازین اکیوملیوتر مساوی با عنصر اول آرایه میشود
               و مقدار کارنت آیتم مساوی با عنصر دوم میشود

              ولی بهتر هست مقدار اولیه یا اینشیال ولیو رو صفر بدیم
              تا کارنت آیتم از عنصر اول شروع بشه
              و اکیوملیتور هم با مقدار صفر شروع شود
               البته اگر مقدار آغازین یا اینشیال رو ندیم هم برای جمع عناصر یک آرایه درست درمیاد
               و مشکلی ایجاد نمیکند
      */
      //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
      // لینک بالا در مورد متد ردیوس دربنیاد موزیلا
      let maxCallback = (acc, cur) => Math.max(acc.x, cur.x);
      console.log([{ x: 22 }].reduce(maxCallback));

      //طبق گفته ی موزیلا
      //باید در آرایه هایی که از نوع آبجکت هستن عناصرشون و میخایم ردیوس روشون بزنیم
      // باید حتما اینشیال ولیو رو ست کنیم
      let initialValue = 0;
      let sumhamid = [{ x: 1 }, { x: 2 }, { x: 3 }].reduce(function(
        accumulator,
        currentValue
      ) {
        return accumulator + currentValue.x;
      },
      initialValue);

      console.log(sumhamid); // logs 6
      ////
      //متد کانکت برای آرایه ها
      // دو یا چند آرایه رو با هم مرج میکنه
      console.log(
        (flattened = [
          [0, 1],
          [2, 3],
          [4, 5]
        ].reduce(function(accumulator, currentValue) {
          return accumulator.concat(currentValue);
        }, []))
      );

      //https://javascript.info/array
      //لینک بالامطالب خوبی در مورد جاوااسکریپت داره

      //شمارش تعداد پراپرتی های تکراری در یک آرایه

      let array2 = ["hamid", "ali", "mohammad", "ali", "hooshang"];

      //یکی از روش ها استفاده از reduce است
      //یعنی آرایه رو کاهش بدیم به یک آبجکت که توش یه سر پراپرتی به اسم عناصر آرایه داریم
      // و به عنوان مقدارشون هم تعداد تکرارشون رو میزاریم
      console.log(
        array2.reduce(
          //callback
          function(acc, cur) {
            //acc مقدار آخرین اجرای تابع رو تو خودش نگه میداره
            //cur هم عنصر جاری آرایه هست
            //مقدار اولیه acc
            //در اولین اجرا یک آبجکت خالی هست که در پایین آوردیمش
            if (cur in acc) acc[cur]++;
            else acc[cur] = 1;
            return acc;
          },
          {}
        )
      );
      //بر اساس تابع معمولی
      //in operator
      //میره ببینه پراپرتی تو آبجکت موردنظر هست یا زنجیره ی ارث بریش یا نه
      //اگه بخایم رو آرایه جست و جو بزنیم باید ایندکس رو بدیم
      // e.g for array usages ==> 0 in array
      // for in ===> روی کلید های آرایه قابل شمارش  ها میگرده
      //for of ====> روی ولیوهای یک آرایه
      ////////////////////////////////////////////////////////////////////
      //تمرین چهارم اینه که تابعی بنویسید که بزرگترین و کوچکترین مقدار آرایه رو برگردونه
      let numbers3 = [3, 1, 2, 4, -2, 12, 10, 1];
      let sorted_array = numbers3.sort(function(a, b) {
        return a - b;
      }); // صعودی
      console.log("Max:", sorted_array[sorted_array.length - 1]);
      console.log("Min:", sorted_array[0]);
      /////////////////////////////////////////////////////////////
      //حذف یک مقدار خاص از آرایه
      function Drop_Item(array, item) {
        function Couting_An_Item() {}

        for (const i of array) {
          if (i == item) {
            array.splice(array[i], 1);
          }
        }
        return array;
      }

      console.log(Drop_Item(numbers3, 1));
    </script>
  </body>
</html>

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


</pre>

 

فایل پیوست

حمید رضا اثنی عشری

توسط

حمید رضا اثنی عشری

19 بهمن 98