Come trovare l’indice di un oggetto in un array

Ho una stringa JSON come:

  var Str="[{ 'label': 'Month'},{ label: 'within'},{ label: 'From'},
         { label: 'Where'},]";

Ho convertiti in oggetti da eval:

      var tagString = eval(Str); 

Voglio ottenere l’indice del mese senza un loop.

C’è un modo migliore per ottenere l’indice di un oggetto in un array senza l’utilizzo di loop?

Grazie in anticipo!

Non JSON. Ma si dovrebbe utilizzare JSON.parse comunque, non eval
Io non la penso così, con il dato datat structur è necessario loop
se io uso JSON.analizzare darà errore come questo JSON.analizzare: si prevede che il nome di proprietà o ‘}’
Perché non è corretto formato JSON. Dovrebbe essere tutto virgolette e non credo virgole finali sono validi.
utilizzando loop” e “senza l’iterazione” non sono sinonimi, costruito in funzioni consentono di esprimere le cose senza l’utilizzo di for o while, come nella mia risposta.

OriginaleL’autore amol challawar | 2013-05-15

2 risposte

  1. 14

    Se queste sono le etichette, è possibile modificare la struttura di questo tipo, quindi è “Un array di label” che, a mio parere, sarebbe più corretto.

    var Str = '["Month","within","From","Where"]';

    Quindi di analizzare con JSON.analisi o dal momento in cui si utilizza jQuery, $.parseJSON per farlo funzionare su più browser:

    var labels = JSON.parse(Str);

    labels dovrebbe essere un array, che è possibile utilizzare Array.indexOf.

    var index = labels.indexOf('Month');

    È ES5 e la maggior parte dei browser moderni supportano. Per i vecchi browser, avete bisogno di un polyfill che purtroppo… anche utilizza un ciclo.

    se io uso var indice = etichette.indexOf(‘Mese’); return -1
    href=”http://jsfiddle.net/XCEtn/” >qui. Si deve mancare qualcosa.
    vedere questo violino, perché questo dà -1 jsfiddle.net/amol_0504/G2JW7
    La mia risposta vi suggerisce di modificare la struttura dei dati.
    Non posso modificare questa struttura di dati perché sto usando il visual plug-in di ricerca & oggetto json come ho dato in questione & violino

    OriginaleL’autore Joseph

  2. 25

    Non parsing json con eval! Utilizzare JSON.analisi. Array.mappa è una buona alternativa a ciclo continuo qui:

    var str = '[{ "label": "Month"}, { "label": "within"}, { "label": "From"}, { "label": "Where"}]';
    var data = JSON.parse(str);
    var index = data.map(function(d) { return d['label']; }).indexOf('Month')

    jsFiddle

    Ma la tua soluzione è la matrice di iterazione.
    Sì, che è l’unico modo per la ricerca di un elenco.
    Questo è corretto, ho frainteso la domanda e presume che non si desidera scorrere l’array. Il Mio Male. Comunque grazie

    OriginaleL’autore Eric

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *