La Red de Conocimientos Pedagógicos - Aprendizaje de redacción de artículos/tesis - ¿Qué idioma se utiliza para el algoritmo de cepillado frontal?

¿Qué idioma se utiliza para el algoritmo de cepillado frontal?

Elija JS

Leecode puede usar js para responder preguntas. ¿Mi gran js es cada vez más reconocido? Pero algunas características de js causarán problemas al responder preguntas. Permítanme resumir los obstáculos en los que caí.

Pit 1: El objeto de matriz en JS es un objeto de referencia.

En js, además del objeto, los objetos de matriz también son objetos de referencia, lo que a menudo se ignora. Por lo tanto, al pasar una matriz de forma recursiva, debe usar arr.slice(0) para copiar una nueva matriz; de lo contrario, la matriz que pase se cambiará recursivamente en el mismo nivel y el resultado será incorrecto.

Así que simplemente copie la matriz, preferiblemente escrita así, a menos que realmente quiera hacer referencia a ella. Tenga en cuenta que existe una gran diferencia entre cortar y empalmar. Si usa splice(0), también puede copiar la matriz, pero la matriz original se eliminará ya que el empalme es una operación.

Para elementos agregados y eliminados, el valor de retorno es una colección de elementos eliminados. Splice (0) significa eliminar desde idx hasta el final de la matriz, por lo que el valor de retorno también es esta matriz. El segmento (inicio, final) puede entenderse como segmento. Omitir el final significa ir al final de la matriz. Si el final es negativo, cuente desde el final de la matriz.

Pit 2: La clasificación en JS se realiza según el orden del diccionario de forma predeterminada.

Generalmente al ordenar, se cree que si es en orden ascendente, no es necesario escribir la función de comparación. Sin embargo, arr.sort() en js está ordenado en orden lexicográfico, lo que significa que puede obtener el efecto deseado usando sort cuando la matriz no es negativa, pero es incorrecto si hay números negativos.

Por ejemplo, arr=?

Así que recuerda escribir funciones de comparación, no seas perezoso, es mejor escribir funciones anónimas.

Foso tres: no hay promoción variable en la función.

En realidad, esto generalmente no es fácil de hacer. La razón principal es que lo combiné con el segundo pozo en ese momento. Cuando personalicé la función de comparación, escribí VARCompare = function (a, b) { returnb }, sí, pero lo escribí en ordenar, por lo que ordenar no pudo encontrar la función de comparación, por lo que usó los caracteres predeterminados Organizar en orden.

Creo que hay algo mal con la definición de comparar. Hay un "levantamiento de variables" al definir variables en una función, es decir, definir vara en cualquier lugar de la función es equivalente a definir vara al comienzo de la función, por lo que una vez que te acostumbras, olvidas que la función no es una variable y no hay elevación variable. No encontrará la definición a continuación. Entonces, cuando escriba una función de comparación,

escríbala como una función anónima.

Punto 4: los cálculos de punto flotante son inexactos

Pruebe console.log(0.3-0.2) y encontrará que es 0.00998.999999998995. Siempre que haya números impares de punto flotante, calcule. Esto debería estar relacionado con el mecanismo de almacenamiento de números de punto flotante en js. No existe una buena solución para este problema. En términos generales, la respuesta es mantener 2 o 3 decimales y usar fijo (n) para mantenerlo directamente.

N dígitos son suficientes. Este método es inherentemente redondeo. Pero siempre hay situaciones en las que desea tomar los límites superior e inferior en lugar de redondearlos, por lo que solo puede piratearlo mediante algunos métodos. Por ejemplo, desea tomar los dos primeros dígitos: (a * 100-b * 100)/100.

Pozo 5: Determinar que la matriz está vacía.

Si (!Arr), debido a que las matrices no se convierten implícitamente como variables, puede usar arr length > 0, pero en algunos casos, tal vez esa variable no sea una matriz, por lo que no puede llegar a la longitud. Entonces vi un método más completo en Internet, que consiste en juzgar el objeto primero.

Si la parte inferior es un tipo de matriz, entonces use la longitud para juzgar.