tutorial soljson smart remix org optimize online false español curso 59dbf8f1 javascript arrays string split

javascript - soljson - smart contracts ethereum



La división de cadenas devuelve una matriz con dos elementos en lugar de uno (11)

No entiendo este comportamiento:

var string = ''a,b,c,d,e:10.''; var array = string.split (''.'');

Espero esto:

console.log (array); // [''a,b,c,d,e:10''] console.log (array.length); // 1

pero entiendo esto

console.log (array); // [''a,b,c,d,e:10'', ''''] console.log (array.length); // 2

¿Por qué se devuelven dos elementos en lugar de uno? ¿Cómo funciona la split ?

Hay otra manera de hacer esto?


Bueno, split hace lo que está hecho para hacer, divide tu cadena. Solo que la segunda parte de la división está vacía.


Debido a que su cadena se compone de 2 partes:

1: a, b, c, d, e: 10

2: vacío

Si lo intentas sin el punto al final:

var string = ''a,b,c:10''; var array = string.split (''.'');

la salida es:

["a,b,c:10"]


Eso es porque la cadena termina con el . carácter: el segundo elemento de la matriz está vacío.

Si la cadena no contendrá . en absoluto, tendrá la matriz de un elemento deseado.

El método split() funciona así hasta donde puedo explicarlo con palabras simples:

  1. Busque la cadena dada para dividir en la cadena dada. Si no se encuentra, devuelve una matriz de elementos con toda la cadena.
  2. Si se encuentra, itera sobre la cadena dada tomando los caracteres entre cada dos ocurrencias de la cadena para dividir por.
  3. En caso de que la cadena dada comience con la cadena a dividir, el primer elemento de la matriz de resultados estará vacío.
  4. En caso de que la cadena dada termine con la cadena para dividir, el último elemento de la matriz de resultados estará vacío.

Se explica más técnicamente https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split , es prácticamente lo mismo para todos los navegadores.


Este es el comportamiento correcto y esperado. Dado que ha incluido el separador en la cadena, la función de división (simplificada) toma la parte a la izquierda del separador ("a, b, c, d, e: 10") como el primer elemento y la parte a El resto del separador (una cadena vacía) como segundo elemento.

Si realmente tiene curiosidad acerca de cómo funciona split (), puede consultar las páginas 148 y 149 de la especificación ECMA (ECMA 262) en http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf


Podría agregar un filtro para excluir la cadena vacía.

var string = ''a,b,c,d,e:10.''; var array = string.split (''.'').filter(function(el) {return el.length != 0});


Tienes una cadena con una ". en él y cuando usa string.split (''.'') recibe una matriz que contiene el primer elemento con el contenido de la cadena antes de "." carácter y el segundo elemento con el contenido de la cadena después de "." - que es en este caso cadena vacía.

Por lo tanto, este comportamiento es normal. ¿Qué querías lograr usando esta string.split?


Una versión ligeramente más fácil de la versión @xdazz para excluir cadenas vacías (usando la función de flecha ES6 ):

var array = string.split(''.'').filter(x => x);


Utilice el método Array.filter() con el método Array.filter() .

var string = ''a,b,c,d,e:10.''; var array = string.split (''.'').filter(item => item); console.log(array); // [a,b,c,d,e:10] console.log (array.length); // 1


asi que; [String.prototype] split(separator, limit) volver al parámetro límite normal está vacío.

"".split(",") // [""] "a,b,c.".split(".", 1) // ["a,b,c"]

Si no pudieras haber hecho esto también, sin parámetro límite. Creo que esta es una operación normal ...


prueba esto

javascript da dos matrices por función de división, entonces

var Val = "[email protected]"; var mail = Val.split(''@''); if(mail[0] && mail[1]) { alert(''valid''); } else { alert(''Enter valid email id''); valid=0; }

si ambos arreglos contienen una longitud mayor que 0, entonces la condición será verdadera