Estoy recibiendo datos json que es agregado por el numéricos de los índices.

Cuando estoy en mi forloop, por ejemplo, el índice podría empezar en 1, lo que significa en mi forloop se produciría un error porque 0 no existe.

¿Cómo puedo comprobar si un índice numérico que existe en el array de javascript?

  • Vamos a ver un ejemplo de esto datos json
  • ¿Cómo podría un índice de no existir en una matriz? Lo que significa es que su valor es undefined, ¿verdad?
  • Favor de poner un ejemplo. Descripciones de problemas en las preguntas son a menudo difíciles de responder sin ejemplos concretos.
  • No ha publicado ningún código para que podamos ver por qué habría un error, sino como una sugerencia, han considerado que el uso de Array.prototyp.forEach? Esto es más probable que solucionar su problema (a menos que Array.length está roto) sin que nos muestra ningún código. :/
  • Esta es una pregunta válida. Los Arrays en JavaScript puede ser escasa. Son, básicamente, los Objetos con algunas propiedades especiales.
InformationsquelleAutor jkushner | 2013-06-21

3 Comentarios

  1. 36
    var a = [1, 2, 3], index = 2;
    
    if ( a[index] !== void 0 ) { /* void 0 === undefined */
        /* See concern about ``undefined'' below.        */
        /* index doesn't point to an undefined item.     */
    }
    • O if (index in a) técnicamente verificar la existencia, a pesar de su !== undefined de verificación más probable es suficiente.
    • typeof un[índice] !== «indefinido» debería ser más seguro
    • Por qué? Si a no está definido se producirá un error tan mal cuando se intenta acceder a [index].
    • Por favor, consulte stackoverflow.com/q/4725603/1624376
    • El segundo comentario allí, usted tiene la cadena 'undefined' un lugar de undefined. Hace una tremenda diferencia en la salida :O
    • su ‘no’ podría ser reemplazado por una variable local dentro de un ámbito, incluso en ES5. Poco probable, pero posible. 😉 (function(undefined) { var a = [1, 2, 3], index = 2; if ( a[index] !== undefined ) { console.log('Index #' + index + '=' + a[index]); /* never triggered, cuz undefined is set to 3. typeof a[index] !== 'undefined' is better*/ } })(3)
    • si un desarrollador crea una función con undefined como su nombre de parámetro, él es digno de ser despellejada viva independientemente del lenguaje de programación utilizado, y digno de ser hervida en tar después, si él es la codificación en JS. Por lo que vale, yo no iría con void 0 en lugar de undefined sólo por esa razón – que no está «a la defensiva de codificación», es «paranoico » codificación» desde ES5. void 0 es ruido semántico, undefined es semánticamente correcto. Debemos programa con los seres humanos en la mente, no de equipos, IMVHO.
    • Configuración indefinido como un (indefinido) valor de parámetro, fue una recomendación de estilo de código para IIFE-patrones, para asegurarse de que el indefinido-parámetro es realmente indefinido y no ya definido fuera del alcance (por ejemplo, por parte de terceros-scripts). Pero sí, su unneccassary desde ES5 con el modo estricto. books.google.de/… —- toddmotto.com/…

  2. 6

    Usted debería ser capaz de utilizar for(key in data)

    var data = [];
    data[1] = 'a';
    data[3] = 'b';
    
    for(var index in data) {
      console.log(index+":"+data[index]);
    }
    //Output:
    //1-a
    //3-b

    Que va a recorrer cada elemento clave en los datos si los índices no son contiguos.

  3. 0

    Si lo que en realidad está describiendo es una Objeto en lugar de un Array, pero es la matriz como en el hecho de que tiene propiedades que son de uint32_t pero no han esencial longitud los bienes presentes. Entonces usted puede convertir a una matriz real como este. Compatibilidad del navegador sabia esto requiere el apoyo de hasOwnProperty

    Javascript

    function toArray(arrayLike) {
        var array = [],
            i;
    
        for (i in arrayLike) {
            if (Object.prototype.hasOwnProperty.call(arrayLike, i) && i >= 0 && i <= 4294967295 && parseInt(i) === +i) {
                array[i] = arrayLike[i];
            }
        }
    
        return array;
    }
    
    var object = {
        1: "a",
        30: "b",
        50: "c",
    },
    array = toArray(object);
    
    console.log(array);

    Salida

    [1: "a", 30: "b", 50: "c"]`

    Sobre jsfiddle

    Ok, ahora usted tiene una región escasamente poblada matriz y desea utilizar un for bucle para hacer algo.

    Javascript

    var array = [],
        length,
        i;
    
    array[1] = "a";
    array[30] = "b";
    array[50] = "c";
    
    length = array.length;
    for (i = 0; i < length; i += 1) {
        if (Object.prototype.hasOwnProperty.call(array, i)) {
            console.log(i, array[i]);
        }
    }

    Salida

    1 "a"
    30 "b"
    50 "c"

    Sobre jsfiddle

    Como alternativa, puede utilizar Array.el prototipo.forEach si su navegador lo soporta, o la cuña como se indica en el MDN página que he enlazado, o es5_shim

    Javascript

    var array = [];
    
    array[1] = "a";
    array[30] = "b";
    array[50] = "c";
    
    array.forEach(function (element, index) {
        console.log(index, element);
    });

    Salida

    1 "a"
    30 "b"
    50 "c"

    Sobre jsfiddle

    • Coche para explicar el voto?

Dejar respuesta

Please enter your comment!
Please enter your name here