Resuma algunos consejos de desarrollo de JS (a booleanos, a números de caracteres, etc.)

1 Convertir valor booleano

Además del booleano convencional truey falsemás allá, JavaScript también todos los demás valores como 'verdadero' o ** 'falso' **.

A menos que se defina lo contrario, todos los valores son 'Truthy' JavaScript, excepto 0,, “”, null, undefinedy, NaNpor supuesto false, estos son ** 'Falsy' **

Podemos cambiar fácilmente entre truey utilizando el operador aritmético negativo false. También convertirá el tipo a "booleano".

const isTrue  = !0;
const isFalse = !1;
const alsoFalse = !!0;
console.log(isTrue); // Result: true
console.log(typeof true); // Result: "boolean"

2 Convertir números

El uso del operador de adición +puede lograr rápidamente el efecto contrario.

let int = "15";
int = +int;
console.log(int); // Result: 15
console.log(typeof int); Result: "number"

Esto también se puede usar para convertir valores booleanos en números como se muestra a continuación.

console.log(+true);  // Return: 1
console.log(+false); // Return: 0

En algunos contextos, se +interpretará como un operador de concatenación en lugar de un operador de suma. Cuando esto sucede (que desea devolver un entero en lugar de flotar), se pueden utilizar dos tilde: ~~.

El uso de dos ondas seguidas niega efectivamente la operación, porque — ( — n — 1) — 1 = n + 1 — 1 = n. En otras palabras, ~—16 igual a 15.

const int = ~~"15"
console.log(int); // Result: 15
console.log(typeof int); Result: "number"

Aunque no puedo pensar en muchos casos de uso, el operador NOT bit a bit también se puede usar en valores booleanos: ~true = \-2y ~false = \-1.

3 Convertir cadena

Para convertir rápidamente un número en una cadena, podemos usar el operador de concatenación +seguido de un conjunto de comillas vacías "".

const val = 1 + "";
console.log(val); // Result: "1"
console.log(typeof val); // Result: "string"

4 número de punto flotante a entero

Si desea convertir números de punto flotante en enteros, puede usar Math.floor(), Math.ceil()o Math.round(). Pero hay una forma más rápida de usar | (operador OR bit a bit) para truncar un número de punto flotante en un entero.

console.log(23.9 | 0);  // Result: 23
console.log(-23.9 | 0); // Result: -23

| El comportamiento depende de si se trata de números positivos o negativos, por lo que es mejor usar este atajo solo cuando sea seguro.

Si nes positivo, n | 0efectivamente se redondea a la baja. Si nes negativo, efectivamente se redondea. Más precisamente, esta operación eliminará cualquier cosa después del punto decimal, truncando el número de punto flotante a un entero.

Puede usar ~~para obtener el mismo efecto de redondeo, como se mencionó anteriormente, de hecho, cualquier operador de bit obligará al número de punto flotante a ser un entero. Estas operaciones especiales son efectivas porque una vez forzadas a un número entero, el valor permanece igual.

 

Eliminar el último número

按位或Los operadores también se pueden utilizar para eliminar cualquier número de dígitos del final de un número entero. Esto significa que no necesitamos usar dicho código para convertir entre tipos.

let str = "1553";
Number(str.substring(0, str.length - 1));

En cambio, el operador OR bit a bit se puede escribir así:

console.log(1553 / 10   | 0)  // Result: 155
console.log(1553 / 100  | 0)  // Result: 15
console.log(1553 / 1000 | 0)  // Result: 1

6 Toma el último elemento de la matriz

El método de matriz slice()puede aceptar enteros negativos y, si lo proporciona, aceptará el valor al final de la matriz en lugar del valor al principio de la matriz.

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(array.slice(-1)); // Result: [9]
console.log(array.slice(-2)); // Result: [8, 9]
console.log(array.slice(-3)); // Result: [7, 8, 9]

 

Desduplicación de matriz 7es6

El tipo de objeto Set se introdujo en ES6. Junto con la operación de expansión ... juntos, podemos usarlo para crear una nueva matriz con solo valores únicos.

const array = [1, 1, 2, 3, 5, 5, 1]
const uniqueArray = [...new Set(array)];
console.log(uniqueArray); // Result: [1, 2, 3, 5]

Esta técnica se aplica a una matriz que contiene básicas undefinedtipos: null, boolean,, stringy number. (Si tiene una matriz que contiene objetos, funciones u otras matrices, ¡necesita un enfoque diferente!)

 

 

 

Supongo que te gusta

Origin blog.csdn.net/AN0692/article/details/108842640
Recomendado
Clasificación