La copia del código es la siguiente:
a = nueva matriz ();
b = nueva matriz (125624);
a.push.apply (a, b);
El código anterior arroja la siguiente excepción bajo Mac Chrome
La copia del código es la siguiente:
RangeError no capturado: el tamaño máximo de la pila de llamadas excedido
Si cambia la matriz a B = nueva matriz (125623); Sería genial si tienes un elemento más pequeño. Probé que otros navegadores también tienen problemas con grandes matrices, pero los valores críticos de diferentes navegadores siguen siendo diferentes.
Busqué http://stackoverflow.com/questions/1374126/how-to-append-an-array-to-an-existing-javascript-array/17368101#17368101 y descubrió que alguien se encontraba con tal pitfall:
La copia del código es la siguiente:
Array.prototype.extend = function (other_array) {
/ * Debe incluir una prueba para verificar si Other_Array realmente es una matriz */
otro_array.forEach (function (v) {this.push (v)}, this);
}
Las sugerencias dadas son para ser honestas y prácticas, que no solo pueden evitar los problemas de excepción de grandes matrices, sino que también consideran el rendimiento de Foreach como el más rápido
Este pequeño pozo me dio dos pensamientos:
1. Algunos usos elegantes como A.Push.Aply (A, B); Es suficiente para ser utilizado para presumir cuando las preguntas de la entrevista. En la práctica, es mejor tomar la ruta honesta para evitar encontrar anormalidades y dificultades de rendimiento. Por ejemplo, un pequeño número de ejemplos de diseño de primavera de topología de red 3D con docenas de nodos en este artículo están bien. Solo cuando se encuentra con volúmenes reales de big data, como HT para ejemplos de rendimiento web en este artículo, puede probar el problema.
2. Http://stackoverflow.com/questions/1374126 Cuando busque respuestas de Stackoverflow, no se concentre solo en los que más votan. La verdad a menudo está en manos de algunas personas. La respuesta con 259 votos en la figura a continuación es un pozo, y 34 votos son el análisis más perfecto: