مقدمة
قضية واجهتها في المقابلة: وظيفة مجموع صفيف JS. أول شيء أفكر فيه هو حلقات الصفيف. ومع ذلك ، أعتقد أن المقابلة طلب هذا السؤال بعدم أخذ الطريقة المعروفة. في ذلك الوقت ، كنت ذكيًا لدرجة أنني فكرت في الوظيفة العودية التي تضيف باستمرار عناصر إلى الصفيف ، لكنني لم أستطع ضبط الطريقة بعد وقت طويل. اتضح أن هذا لم يكن الحل الأمثل. أخيرًا ، سألني القائم بإجراء المقابلة عما إذا كنت قد رأيت reduce() من قبل ، لكن الأمر لم يكن كذلك. لذلك عندما أبحث عن المعلومات ، فإن Array.reduce() هي سمة جديدة تمت إضافتها إلى ES5 ، وتشابهها Array.reduceRight()。
دعنا نلخص طريقة جمع المصفوفات أدناه.
أقسى طريقة: الحصول على حلقة
أضف واحد تلو الآخر من خلال حلقة. انظر إلى الكود:
Array.Prototype.sum = function () {var result = 0 ؛ لـ (var i = 0 ؛ i <this.length ؛ i ++) {result+= this [i] ؛ } نتيجة الإرجاع ؛} ؛ [1،4،7،2،10] .sum () ؛ // 24استخدم طريقة تقليل
باستخدام طريقة reduce ، يمكنك كتابة طريقة sum لتجميع صفيف.
تستقبل طريقة reduce() وظيفة كمراكم ، وتبدأ كل قيمة في الصفيف (من اليسار إلى اليمين) في الانكماش وينتهي بها الأمر إلى أن تكون قيمة.
بناء جملة الحد من:
Array.Reduce (رد الاتصال [، initialValue]) ؛
تقبل وظيفة callback 4 معلمات: previousValue (القيمة التي تم إرجاعها بواسطة رد الاتصال الأخير) ، currentValue (العنصر الحالي الذي يتم معالجته) ، index (الفهرس) ، والمصفوفة نفسها (يتم استدعاء المعلمة الأولى من callback لأول مرة) ، وتنفيذ الوظيفة لكل قيمة في المصفوفة.
المعلمة initialValue اختيارية ، مما يشير إلى القيمة الأولية ؛ إذا تم تحديد المعلمة initialValue ، فإنها تعتبر القيمة previous المستخدمة في الأصل. إذا كان الافتراضي ، يتم استخدام العنصر الأول من الصفيف كقيمة أولية previous ، current هو مكان واحد في الظهر.
Array.Prototype.sum = function () {return this.reduce (function (partial ، value) {return partial + value ؛})} ؛ [1،4،7،2،10] .sum () ؛ // 24 بالمقارنة مع الطريقة الأولى ، فإن استخدام طريقة reduce() أكثر كفاءة.
يمكن لمقارنة الكفاءة في هاتين الطريقتين استدعاء new Date() مباشرة قبل وبعد تشغيل الوظيفة للحصول على الوقت الحقيقي ، وبالتالي مقارنة وقت التنفيذ خلال الفرق الزمني. لن أقارنها هنا لأن بيئة تنفيذ الجميع تختلف اختلافًا كبيرًا. نتيجة الاختبار هي أن وقت تنفيذ طريقة reduce() أقصر.
وظيفة مجموع صفيف JS وابحث عن القيمة القصوى في الصفيف
رمز مثال
<! doctype html public "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w3 xmlns = "http://www.w3.org/1999/xhtml"> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = gb2312" /> <title> wulin.net_js armax method_wulin </gb2312 "/> name = "الكلمات الرئيسية" content = "WebSimper ، Web Page Infrofts ، رمز المؤثرات الخاصة صفحة الويب ، JS Infrofies ، JS Scripts ، نصوص ، رموز الإعلان ، VEVB.com ، www.vevb.com ، wulin.com" /> <meta name = "description" content = "www.vevb.com ، wulin.com ، يجب أن يكون لدى مواقع الويب مؤثرات خاصة و AN A CODES. توفير تنزيلات رمز الإعلان عالي الجودة ، كل ذلك على wulin.com "/> </head> <body> <a href =" // www.vevb.com/"> wulin.com </a> ، يجب أن يكون لدى مشرفي المواقع مؤثرات خاصة على شبكة الويب عالية الجودة ورموز الإعلان. VEVB.com ، مدير المواقع JS المؤثرات الخاصة. <hr> <script type = "text/javaScript"> // sum array.prototype.sum = function () {for (var sum = i = 0 ؛ i <this.length ؛ i ++) sum+= parseint (this [i]) ؛ إرجاع SUM ؛ إرجاع maxvalue ؛} ؛ // تطبيق var arr = [1،21،3،4،22،45،60،7،32] ؛ ALERT (arr.join (" +") + "=" + arr.sum ()) ؛ التنبيه (arr.join ("|") + "، أكبر رقم هو:" + arr.maxima ()) ؛ </script> </body> </html>ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لاستخدام الجميع لـ JavaScript. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة ومناقشتها. سوف يرد المحرر على الجميع في الوقت المناسب.