Prefacio
Un problema encontrado en la entrevista: la función de suma de matriz JS. Lo primero que pienso son los bucles de matriz. Sin embargo, creo que el entrevistador hizo esta pregunta para no tomar el método conocido. En ese momento, era tan inteligente que pensaba en la función recursiva constantemente agregando elementos a la matriz, pero no pude ajustar el método después de mucho tiempo. Resultó que esta no era la solución óptima. Finalmente, el entrevistador me preguntó si había visto reduce() antes, pero en realidad no fue así. Entonces, cuando busco la información, Array.reduce() es un nuevo atributo agregado a ES5, y los similares son Array.reduceRight()。
Resumamos el método para sumar matrices a continuación.
La forma más difícil: adquisición de bucle
Agregue uno por uno a través del bucle for. Mira el código:
Array.prototype.sum = function () {var result = 0; for (var i = 0; i <this.length; i ++) {resultado+= this [i]; } resultado de retorno;}; [1,4,7,2,10] .sum (); // 24Utilice el método Reducir
Usando el método reduce , puede escribir un método sum para sumar una matriz.
reduce() recibe una función como acumulador, y cada valor en la matriz (de izquierda a derecha) comienza a encogerse y termina siendo un valor.
Sintaxis de reducir:
array.reduce (devolución de llamada [, inicialValue]);
La función callback acepta 4 parámetros: previousValue (el valor devuelto por la última devolución de llamada), currentValue (el elemento actual procesado), index (índice) y la matriz en sí (el primer parámetro de devolución de callback se llama por primera vez) y ejecuta la función para cada valor en la matriz.
El parámetro initialValue es opcional, lo que indica el valor inicial; Si se especifica initialValue , se considera el valor previous utilizado originalmente. Si es predeterminado, el primer elemento de la matriz se usa como previous , y current es un lugar en la parte posterior.
Array.prototype.sum = function () {return this.reduce (function (parcial, valor) {return parcial + valor;})}; [1,4,7,2,10] .sum (); // 24 En comparación con el primer método, usar reduce() es más eficiente.
La comparación de eficiencia de estos dos métodos puede llamar directamente a new Date() antes y después de que la función se ejecute para obtener el tiempo en tiempo real, comparando así el tiempo de ejecución a través de la diferencia de tiempo. No lo compararé aquí porque el entorno de ejecución de todos varía mucho. El resultado de la prueba es que el tiempo de ejecución del método reduce() es más corto.
Función de suma de matriz JS y encuentre el valor máximo en la matriz
Código de ejemplo
< xmlns = "http://www.w3.org/1999/xhtml"> <fead> <meta http-equiv = "content-type" content = "text/html; charset = gb2312" /><title>wulin.net_js summation summation Method_wulin.net <title <title <title name = "worthalwails" content = "webmaster, efectos especiales de la página web, código de efectos especiales de la página web, efectos especiales JS, scripts JS, scripts, códigos de publicidad, vevb.com, www.vevb.com, wulin.com" /> <meta name = "description" content = "www.vevb.com, wulin.com, los maestros web deben tener efectos especiales de JS y anuncios de códigos de anuncios. Un gran número de alta calidad. Descargas, todos en wulin.com "/> </head> <body> <a href =" // www.vevb.com/">wulin.com </a>, los webmasters deben tener efectos especiales y códigos de publicidad de página web de alta calidad. VEVB.com, Webmaster JS Efectos especiales. <hr> <script type = "text/javascript"> // sum array.prototype.sum = function () {for (var sum = i = 0; i <this.length; i ++) sum+= parseInt (this [i]); return sum;}; // busque el valor máximo array.prototype.maxima = function () {for (var i = 0, maxValue = number.min_value; i <this.length; i ++) parseint (this [i])> maxValue && (maxValue = this [i]); return maxValue;}; // aplicar var arr = [1,21,3,4,22,45,60,7,32]; alerta (arr.Join (" +") + "=" + arr.sum ()); alerta (arr.join ("|") + ", el número más grande es:" + arr.maxima ()); </script> </body> </html>Lo anterior es todo el contenido de este artículo. Espero que sea útil para el uso de JavaScript de todos. Si tiene alguna pregunta, deje un mensaje y discúblalo. El editor responderá a todos a tiempo.