ahmed1990 نشر 5 ديسمبر 2015 أرسل تقرير نشر 5 ديسمبر 2015 هل هنالك معادلة لدالة zip (الموجودة في بايثون) في لغة جافاسكربت؟ فأنا أريد دمج 3 مصفوفات كالتالي:var array1 = [1, 2, 3]; var array2 = ['a','b','c']; var array3 = [4, 5, 6]; والنتيجة ستكون كالتالي:var output array:[[1,'a',4], [2,'b',5], [3,'c',6]] اقتباس
0 هشام رزق الله نشر 5 ديسمبر 2015 أرسل تقرير نشر 5 ديسمبر 2015 هنالك عدّة طرق لدمج المصفوفات مع بعض لتشكيل أزواج كما في دالة zip في بايثون، فلو افترضنا أنك تريد كتابة دالة وأن جميع المصفوفات متساوية في الحجم – كما يفترض أن تكون – بالإضافة إلى أنك ستمرر قائمة من القوائم المعاملات (على عكس النسخة الموجودة في بايثون حيث تكون قائمة المعاملات متغيرة) فيمكنك كتابة سطور مشابه لهذه:function zip(arrays) { return arrays[0].map(function(_,i){ return arrays.map(function(array){return array[i]}) }); } // > zip([[1,2],[11,22],[111,222]]) // [[1,11,111],[2,22,222]]] // If you believe the following is a valid return value: // > zip([]) // [] // then you can special-case it, or just do // return arrays.length==0 ? [] : arrays[0].map(...)أما في حالات عدم تساوي حجم المصفوفات فيمكنك في هذه الحالة استخدام هذه الطريقة التي ستحذف (ستدّعي عدم وجودها) قائمة العناصر التي لا تحتوي على جميع العناصر:function zip() { var args = [].slice.call(arguments); var shortest = args.length==0 ? [] : args.reduce(function(a,b){ return a.length<b.length ? a : b }); return shortest.map(function(_,i){ return args.map(function(array){return array[i]}) }); } // > zip([1,2],[11,22],[111,222,333]) // [[1,11,111],[2,22,222]]] // > zip() // [] اقتباس
السؤال
ahmed1990
هل هنالك معادلة لدالة zip (الموجودة في بايثون) في لغة جافاسكربت؟ فأنا أريد دمج 3 مصفوفات كالتالي:
والنتيجة ستكون كالتالي:
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.