دوستان من برای خودم چندتا مسیله تعریف کردم و حلشون کردم دلم نیومد که به اشتراک نزارمش این مسایل رو .... لطفا این مسایل رو شما هم حلش کنید و هر سوالی که داشتید حتما بپرسید...
هر کسیم که حل کرد اگه دوست داشت حلشو اینجا بزاره تا بقیه هم استفاده کنند
جواب همه ی این سوالات هم تا فردا شب ساعت 10 میزارم تا اون موقع خودتون رو به چالش بکشید و سعی کنید خوتون حلش کنید
اگرم بازم مسیله خواستید بگید تا طراحی کنم براتون
دوستانی هم که نمیدونن که تابع چیه این مطلب رو بخونن کار با توابع
سلام به نظرم خیلی کار خوبیه که دوستان تمریناتشون را به اشتراک بذارن و خیلی کمک میکنه به درک عمیق تر مطالب:
و اما جواب سوالات:
////////////////////////////////////////////////////////////
//مقدار آخرین اندیس آرایه را برمیگرداند
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;
}
////////////////////////////////////////////////////////////
مرسی بابت طراحی تمرین. لطفا هر جلسه تکرار کنید. ممنون
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]
پاسخ صحیح سوالات
// ***********************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));
سلام . ممنون از مساله ها خوبتون .
<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>