Tengo una muy simple cadena de caracteres que contiene una lista en la que puede contener espacios en blanco:

string = "one, two,three ";

Quiero a la primera división de la cadena de , para crear una matriz de tres cuerdas y, a continuación, quitar los espacios en blanco utilizando .trim()

array = string.split(',').trim();

que devuelve "one","two","three"

sin embargo a veces falla y devuelve un error .trim() is not a function

He leído que .trim() devuelve una nueva cadena no es una versión recortada de la cadena actual. Así que he usado un bucle for para hacer lo anterior:

array = string.split(',');
for (var i = 0; i < array.length; i++) {
    var item = array[i].trim();
    array.push(item);
}

que devuelve "one","two","three"

mi pregunta es, ¿alguien puede explicar por qué estaba recibiendo el error sólo a veces? si la matriz cambiado nunca de mi ejemplo y nadie puede proporcionar una solución de limpieza para mi revisión.

  • usted debe conseguir TypeError: array.split is not a function cada vez, de modo que nunca iba a conseguir nunca el error de decir que usted está consiguiendo
  • which returns "one","two","three" – no, no … también se queja de que la matriz.split es una función – te sugiero que si usted necesita ayuda con el código, al simplificar, asegúrese de que muestra los mismos errores en el código real es tener
  • El método split() divide un objeto String en un array de cadenas de caracteres mediante la separación de la cadena en subcadenas, desde el doc
  • No hay split método en una matriz. Incluso si usted comienza con una cadena en lugar de una matriz, a continuación, el split método devuelve un array y no hay trim método en una matriz. Si desea mover un elemento en la matriz que está en bucle, entonces usted nunca iba a llegar a la final de la matriz, sería un bucle infinito. Así, ninguno de los código que se muestran devolvería nada.
  • si la primera línea es un error y debe ser array = "one, two,three "; – a continuación, su última pieza de código se ejecutará hasta que el navegador ha tenido suficiente y le pide que deje que el script se ejecute
  • lo siento todo, string.split(',').trim(); devuelve una matriz con el fin de acabo mal llamado mi ejemplo, el original, el var es una cadena como muchos de ustedes sugieren.
  • sí que era un error tipográfico como yo era la reescritura de código real para hacer más fácil para leer ejemplo.. fue así como se puede decir. De lujo responder a la actualización como pareces bien informado sobre el tema.

InformationsquelleAutor gardni | 2015-10-07

3 Comentarios

  1. 3

    split() no funciona en las matrices, pero en las cuerdas.
    Como lo escribió su Cadena en una matriz, tienes que conseguir que la cadena a través de array[0], ya que la cadena es el primer Elemento.

    Si usted divide su cadena en una matriz, puede llamar a la función de mapa y recortar cada valor en su matriz que acaba de crear.
    como este:

    array = ["one, two,three "];
    array = array[0].split(',')
    array = array.map(function(a){return a.trim()})

    O en corto:

    array = ["one, two,three "][0].split(',').map(function(a){return a.trim()})
  2. 1

    En ES6 cumple en tiempo de ejecución (he.e: nodo 4+) puede utilizar el uso de la flecha de la función que le da una menos detallado código para lograr su objetivo:

    > "one, two, three ".split(',').map(s => s.trim());
    [ 'one', 'two', 'three' ]
  3. 0

    Vi esta misma cuestión, tratando de recorrer la salida de la Cadena.dividir el uso de un «for (var i en splitTokens)». Nota sólo me pasó a mí en el navegador (Chrome, en mi caso), es decir, no cuando se utiliza el mismo código en un nodo de proceso.

    Me confundía hasta que me enganchó un depurador y entonces vi el problema. De la cadena.split devuelve un Array de objetos de instancia (splitTokens), que tiene funciones en él («cada uno», etc). El «for (var i en splitTokens)» bucle itera a las funciones, por lo que también splitTokens[yo] estaba volviendo por ejemplo, la cada una de las funciones de la instancia de Array, lo que causó cosas para explotar si traté de llamar, por ejemplo, «trim()» (porque el objeto de la función no tiene una función llamada trim()).

Dejar respuesta

Please enter your comment!
Please enter your name here