:: # دورة النظم المتقدمة في المحاسبة وتحقيق الرقابة المالية وتقييم الأداء#30يونيه 2024م (آخر رد :جهاد سعيد)       :: # دورة إعداد التقارير و المراسلات والأرشفة#2 يونيه 2024م #اسطنبول#metc (آخر رد :جهاد سعيد)       :: خدمات شركة الحمد (آخر رد :soha mag)       :: # دورة الادارة الامنة للشبكات وأنظمة التشغيل#7 يوليو 2024م #القاهرة#metc (آخر رد :جهاد سعيد)       :: # دورة استراتيجيات التخطيط في إدارة الأزمات#23 يونيه 2024م #دبي#metc (آخر رد :جهاد سعيد)       :: خدمات شركة الحمد (آخر رد :soha mag)       :: # دورة إعداد ميزانية برامج الصيانة الإنتاجية#2 يونيه 2024م #القاهرة#metc (آخر رد :جهاد سعيد)       :: # دورة الاستراتيجيات المتقدمة للمشتريات والمخازن وادارة الخدمات اللوجستية#2 يونيه 202 (آخر رد :جهاد سعيد)       :: شركة الحمد وفروعها (آخر رد :soha mag)       :: #دورة الإبتكار في تطبيقات الذكاء الإصطناعي للتميّز المؤسسي #26 مايو 2024م #دبي#metc (آخر رد :جهاد سعيد)      
اختر لونك:
وَقُلِ اعْمَلُوا فَسَيَرَى اللَّهُ عَمَلَكُمْ وَرَسُولُهُ وَالْمُؤْمِنُونَ ۖ وَسَتُرَدُّونَ إِلَىٰ عَالِمِ الْغَيْبِ وَالشَّهَادَةِ فَيُنَبِّئُكُم بِمَا كُنتُمْ تَعْمَلُونَ [ التوبة : ( 105 )] كلمة الإدارة

يرجى إختيار القسم المناسب قبل النشر وسيعاقب المخالف بإنذار أول مرة وسيتم حظره إذا تكرر ذلك كلمة الإدارة

يُمنع كتابة مواضيع السحر والشعوذة والروحانيات والابراج بكافة الأشكال والمخالف سيعاقب بحظر مؤقت وإذا تكرر سيكون حظر دائم تنبيه هام جداً



أضف رد جديد
 
LinkBack أدوات الموضوع انواع عرض الموضوع

قديم 01-04-2019, 05:30 PM   #1
تاريخ التسجيل: Feb 2019
العمر: 38
المشاركات: 1,149
التقييم: 10
تاريخ التسجيل: Feb 2019
العمر: 38
المشاركات: 1,149
التقييم: 10
افتراضي اساسيات التعامل مع المصفوفات في جافاسكريبت

تعتبر المصفوفات من أكثر أنواع الكائنات استخداما في تطبيقات جافاسكريبت، إذ لا يكاد يخلو تطبيق منها نظرا لأهميتها في تخزين مختلف أنواع البيانات على شكل قوائم أو مجموعات خاصة يتم التعامل معها ومعالجتها عن طريق عدة وظائف وخصائص تميزها عن غيرها من كائنات جافاسكريبت (Javascript objects).
في كثير من الحالات، نحتاج للقيام بعمليات بحث، فلترة (Filtering) أو التعديل على بيانات مخزنة في مصفوفات داخل تطبيقنا. وعوض أن نقوم بالمرور على جميع عناصر المصفوفة وإجراء العمليات المرجوة داخل حلقة For loop، هناك وظائف خاصة في جافاسكريبت لتسهيل هذه العمليات كلها وجعلها تصريحية (Declarative) وأكثر قابلية للقراءة والفهم على الشخص الذي يقرأ الشفرة البرمجية.
في هذا المقال سنمر على مجموعة من أهم هذه الوظائف أو Methods الخاصة بالمصفوفات في لغة جافاسكريبت.
()includes

تستخدم وظيفة ()includes للتحقق من وجود String معين في المصفوفة، وتقوم بإرجاع true أو false.
عند استخدام هذه الوظيفة يجب معرفة بأن البارامتر الذي يتم تمريره حساس لحالة الأحرف (Case sensitive)، فإذا كانت المصفوفة تضم عنصر اسمه “javascript” وبحثنا عنه باستخدام الكلمة “JAVASCRIPT” فإن النتيجة ستكون هي false.
let languages = ["php", "javascript", "ruby", "python", "csharp"]; console.log( languages.includes("javascript") ); // true console.log( languages.includes("JAVASCRIPT") ); // false


let languages = ["php", "javascript", "ruby", "python", "csharp"];

console.log( languages.includes("javascript") ); // true

console.log( languages.includes("JAVASCRIPT") ); // false



الوظيفة ()includes غير مدعومة من متصفح انترنت إكسبلورر.
()some

بدورها تقوم الوظيفة some بالتحقق من وجود عنصر معين داخل المصفوفة، ولكنها تختلف عن includes بكونها تقبل دالة كبارامتر وليس String.
let languages = ["php", "javascript", "ruby", "python", "csharp"]; languages.some(function(item) { return item === "swift"; }); // false languages.some(function(item) { return item === "php"; }); // true let products = [{ name: "iPhone", price: 999.00 }, { name: "Galaxy S9", price: 799.00 }, { name: "iPad Pro", price: 1349.00 }]; products.some(function(item) { return item.price > 1000; }); // true (iPad Pro)


let languages = ["php", "javascript", "ruby", "python", "csharp"];

languages.some(function(item) {
return item === "swift";
}); // false

languages.some(function(item) {
return item === "php";
}); // true

let products = [{
name: "iPhone",
price: 999.00
},
{
name: "Galaxy S9",
price: 799.00
},
{
name: "iPad Pro",
price: 1349.00
}];

products.some(function(item) {
return item.price > 1000;
}); // true (iPad Pro)



عندما يحقق عنصر واحد على الأقل الشرط (Condition) الموجود في دالة البارامتر يتم إرجاع true، بينما يتم إرجاع false في حالة عدم وجود أي عنصر داخل المصفوفة يحقق ذلك الشرط.
()every

تقوم الوظيفة بالمرور على كافة عناصر المصفوفة وتتحقق من كون جميع العناصر تحقق الشرط الموجود داخل الدالة البارامتر فتقوم بإرجاع true أو false في حالة وجود عنصر واحد على الأقل لا يحقق ذلك الشرط. على عكس الوظيفة ()some التي يكفيها عنصر واحد فقط يحقق الشرط لكي تكون النتيجة هي true.
let products = [{ name: "iPhone", price: 999.00 }, { name: "Galaxy S9", price: 799.00 }, { name: "iPad Pro", price: 1349.00 }]; products.every(function(item) { return item.price > 700; }); // true products.every(function(item) { return item.price > 800; }); // false

let products = [{
name: "iPhone",
price: 999.00
},
{
name: "Galaxy S9",
price: 799.00
},
{
name: "iPad Pro",
price: 1349.00
}];

products.every(function(item) {
return item.price > 700;
}); // true

products.every(function(item) {
return item.price > 800;
}); // false



()filter

تقوم ()filter بفلترة أو تصفية مصفوفة معينة وفقا للشرط الموجود داخل الدالة البارامتر. هذه الوظيفة لا تقوم بتغيير المصفوفة الأصلية، بل تنشئ وتقوم بإرجاع مصفوفة جديدة وبداخلها العناصر فقط التي اجتازت عملية التصفية (Immutable array method).
var products = [{ name: "iPhone", price: 999.00 }, { name: "Galaxy S9", price: 799.00 }, { name: "iPad Pro", price: 1349.00 }]; var maxOneThousandDollars = products.filter(function(item) { return item.price <= 1000; }); console.log( maxOneThousandDollars ); // [{ name: "iPhone",price: 999 },{ name: "Galaxy S9",price: 799 }]


var products = [{
name: "iPhone",
price: 999.00
},
{
name: "Galaxy S9",
price: 799.00
},
{
name: "iPad Pro",
price: 1349.00
}];

var maxOneThousandDollars = products.filter(function(item) {
return item.price <= 1000;
});

console.log( maxOneThousandDollars );
// [{ name: "iPhone",price: 999 },{ name: "Galaxy S9",price: 799 }]



()map

تشبه الوظيفة ()map نظيرتها ()filter في كونها تقوم بإرجاع مصفوفة جديدة مع الحفاظ على المصفوفة الأصلية كما هي، إلا أنها تتميز بكونها تستخدم لتغيير عناصر المصفوفة وليس للفلترة.
إذا كنت من مستخدمي إطار العمل React.js فمن المؤكد بأن هذه الوظيفة مألوفة بالنسبة لك، حيث أنها تستخدم على نطاق واسع في عملية تحويل مصفوفات البيانات إلى مكونات React.js على شكل JSX.
لنتخيل أننا أجرينا تخفيضا على أسعار منتوجاتنا بنسبة %، ولكي نقوم بعرض المنتوجات مع السعر الجديد سنقوم بالإستعانة بالوظيفة map كما يلي :
let products = [{ name: "iPhone", price: 999.00 }, { name: "Galaxy S9", price: 799.00 }, { name: "iPad Pro", price: 1349.00 }]; let productsAfterDiscount = products.map(function(item) { return { name: item.name, price: item.price * 0.75 }; }); console.log( productsAfterDiscount ); // [{ name: "iPhone",price: 749.25 },{ name: "Galaxy S9",price: 599.25 }, {name: "iPad Pro", price: 1011.75 }]


let products = [{
name: "iPhone",
price: 999.00
},
{
name: "Galaxy S9",
price: 799.00
},
{
name: "iPad Pro",
price: 1349.00
}];

let productsAfterDiscount = products.map(function(item) {
return {
name: item.name,
price: item.price * 0.75
};
});


console.log( productsAfterDiscount );
// [{ name: "iPhone",price: 749.25 },{ name: "Galaxy S9",price: 599.25 }, {name: "iPad Pro", price: 1011.75 }]



()reduce

تستخدم الوظيفة ()reduce لتحويل المصفوفة إلى شيء آخر قد يكون عددا، نصا، كائن جافاسكريبت إلخ…
لإعطاء مثال بسيط عن دور reduce، سنقوم بحساب مجموع الأعداد الموجودة في مصفوفة معينة :
let prices = [ 999.00, 799.00, 1349.00]; let pricesSum = prices.reduce(function(a, b) { return a + b; }); console.log( pricesSum ); // 3147


let prices = [ 999.00, 799.00, 1349.00];

let pricesSum = prices.reduce(function(a, b) {
return a + b;
});


console.log( pricesSum ); // 3147



تلاحظون أن دالة البارامتر تقبل بدورها معاملين اثنين، حيث تضيف الثاني إلى الأول وهكذا دواليك حتى تصل إلى نهاية المصفوفة فتقوم بإرجاع حاصل عملية الجمع (3147).
يمكن استخدام هذه الوظيفة مثلا لجمع أثمنة المنتوجات الموجودة في سلة المشتريات بمتجر إلكتروني، وهناك حالات عديدة أخرى متقدمة يمكن أن تسعفنا فيها ()reduce.

raheel غير متواجد حالياً   اقتباس
أضف رد جديد


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
فن التعامل مع الاخرين , كيفية تأسيس علاقات طيبة مع زملاء الدراسة مهرة النجدية المواضيع العامة 1 08-06-2022 03:36 PM
صف وتسجيل ملفات Javascript و CSS في قوالب ووردبريس مهرة النجدية قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 1 27-07-2019 11:03 PM
كيف ظهرت وتطورت أطر عمل جافاسكريبت ؟ raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 10-04-2019 08:25 PM
مراحل تطور أطر عمل جافاسكريبت raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 01-04-2019 06:00 PM
كورس اوفيس 2010 - اكسل - 2 - اساسيات التعامل مع الملف الفارس قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 10-03-2019 03:45 AM


الساعة الآن 01:51 PM

 


Content Relevant URLs by vBSEO ©2010, Crawlability, Inc.