如何从对象内的数组中获取值

时间:2017-04-17 08:40:13

标签: javascript jquery

var schema = {
    title: {
        label: 'xxxx', className: 'title'
    },     
    body: [
        //Q1
        {label: '1. x2', tag: 'radio',
        data1 : [
            {'value': '1', 'label': 'y'},
            {'value': '2', 'label': 'n'},
        ],   
    },
    ]
 }

这是代码。我想得到'值得'来自' data1',我该如何实现它。

模式['主体'] [0] [' DATA1'] [1]。价值 这很有效。 THX。

4 个答案:

答案 0 :(得分:0)

cami*primercami(cami*primero, int origen){ new cami; primero->n_aeropuertos=1; primero->pos_aeropuertos[0]=origen; primero->coste_acumulado=0; primero->coste_heuristica=0; primero->next=NULL; return primero; } cami*AfegirCamiOrdenat (cami* primerolista, cami*nuevoelemento){ cami *ant; cami *act; int correcto; cout<<"Hola estoy ordenando el camino"<<endl; if (nuevoelemento == NULL) { correcto = 0; //retorna falso si el nuevo elemento no se ha creado bien } else{ //si la lista esta vacía el nuevo elemento será el primero if(primerolista==NULL) { primerolista = nuevoelemento; primerolista->next = NULL; }else //busca la posición donde ha de ir el elemento { ant = NULL; act = primerolista; while (act->coste_heuristica < nuevoelemento->coste_heuristica && act->next != NULL ) //parar si se llega a la posición donbde insertar o al último elemento { ant = act; act = act->next; } if (ant == NULL && act->coste_heuristica >= nuevoelemento->coste_heuristica) //insertar como primer elemento { primerolista = nuevoelemento; nuevoelemento->next=act; } else { if (act->next == NULL && act->coste_heuristica<nuevoelemento->coste_heuristica) //insertar como último elemento { act->next=nuevoelemento; nuevoelemento->next = NULL; } else //insertar al medio de la lista { nuevoelemento->next = act; ant->next=nuevoelemento; } } } correcto=1; } return primerolista; } void AEstrella(char lista[24][4], int matPrecio[25][25], int matDist[25][25], int matTiempo[25][25]){ int NumOrigen, NumDestino; cami*primerelemento; preguntarVuelo(lista, NumOrigen, NumDestino); cout<<"El origen es el n "<<NumOrigen<<" y el destino el n "<<NumDestino<<endl; primerelemento=primercami(primerelemento, NumOrigen); cout<<"He pasado primercami"<<endl; while(primerelemento->pos_aeropuertos[primerelemento->n_aeropuertos-1]!=NumDestino){ cami*expansio; cami*expansio2; int PosAct=primerelemento->pos_aeropuertos[primerelemento->n_aeropuertos-1];//Determinamos en el APT que nos encontramos expansio=primerelemento; expansio2=primerelemento; expansio->next=NULL; expansio2->next=NULL; primerelemento=primerelemento->next; int Dest1, Dest2; mostrarDestinos(vectorVuelos,lista,PosAct,Dest1, Dest2); //Expandimos para el primer destino encontrado coste_vuelo=matPrecio[PosAct][Dest1]; heuristica=matPrecio[Dest1][NumDestino]; ActualitzarCami(expansio, Dest1, coste_vuelo, heuristica); cout<<"Coste acumulado: "<<expansio->coste_acumulado<<" Coste heuristica: "<<expansio->coste_heuristica<<endl; cout<<"N APTS: "<<expansio->n_aeropuertos<<" Ultimo APT: "<<expansio->pos_aeropuertos[expansio->n_aeropuertos-1]<<endl; primerelemento=AfegirCamiOrdenat(primerelemento, expansio); cout<<"Hemos pasado por "<<primerelemento->pos_aeropuertos[0]<<" "<<primerelemento->pos_aeropuertos[1]<<endl; //expandimos para el segundo destino encontrado coste_vuelo=matPrecio[PosAct][Dest2]; heuristica=matPrecio[Dest2][NumDestino]; ActualitzarCami(expansio2, Dest2, coste_vuelo, heuristica); primerelemento=AfegirCamiOrdenat(primerelemento, expansio2); }//while buscando destino primerelemento=imprimirllistaCami(primerelemento); esborrarlista(primerelemento); }

schema['body'][0]['data1'][0].value

答案 1 :(得分:0)

只需像这样schema.body[0].data1.map(a => a.value)使用。他们Array#map迭代data1数组的所有值

&#13;
&#13;
var schema = {
  title: {
    label: 'xxxx',
    className: 'title'
  },
  body: [
    //Q1
    {
      label: '1. x2',
      tag: 'radio',
      data1: [{
          'value': '1',
          'label': 'y'
        },
        {
          'value': '2',
          'label': 'n'
        },
      ],
    },
  ]
}

console.log(schema.body[0].data1.map(a => a.value))
&#13;
&#13;
&#13;

答案 2 :(得分:0)

我不会给你作业的答案,但这是一种过于复杂的方式:

function getValue(obj, props){
    if(!props.length)   return [obj];
    if(typeof obj !== "object") return [];
    if(!obj)    return [];

    var values = [];
    for(var key in obj){
        var prop = props.slice();
        if(key === props[0]){
            prop.shift();
        }
        values = values.concat(getValue(obj[key], prop));
    }
    return values;
}

getValue(schema, ["data1", "value"]);    // ["1", "2"]

如果你理解,可以获得额外的功劳。

答案 3 :(得分:0)

尝试以下步骤应该有所帮助

1. First you need to change object into string
2. Use JSON.parse to get json object
3. From json object you can access any items like below sample

示例代码:

var text = '{"title":{"label":"xxxx","className":"title"},"body":[{"label":"1. x2","tag":"radio","data1":[{"value":"1","label":"y"},{"value":"2","label":"n"}]}]}';

obj = JSON.parse(text);
console.log(obj.body[0].data1[0].label);

以下是工作示例代码:http://jsfiddle.net/NJMyD/5389/