简体   繁体   English

如何在JSON ANGULAR中访问数组?

[英]How to access to array in JSON ANGULAR?

I'm trying to show an array in the view of my Angular project 我试图在我的Angular项目视图中显示一个数组

Items.json Items.json

{
  "tipo": "texto",
  "texto": "Un colegio necesita enviar 5 estudiantes como representantes a un foro sobre la contaminación del medio ambiente. Se decidió que 2 estudiantes sean de grado décimo y 3 de grado undécimo. En décimo hay 5 estudiantes preparados para el foro y en undécimo hay 4. ¿Cuántos grupos diferentes pueden formarse para enviar al foro?",
  "respuestas": [
    "9",
    "14",
    "20",
    "40"
  ]
}

TS: TS:

let timeoutMS = 10000;
this.http.get(assets / Items.json)
    .timeout(timeoutMS)
    .map(res => res.json()).subscribe(data => {
        let responseData = data;

        this.preguntas = responseData;
        console.log(this.preguntas);

    },
    err => {
        console.log(err);
    });

console.log() displays the JSON correctly respuestas is an Array, so it is OK console.log()正确显示JSON, respuestas是一个数组,所以可以

In the view I get preguntas.texto = "Un colegio necesita enviar 5 estudiantes..." and preguntas.respuestas = 9,14,20,40 . 在视图中,我得到preguntas.texto = "Un colegio necesita enviar 5 estudiantes..."preguntas.respuestas = 9,14,20,40

If I try to get preguntas.respuestas[0] I have this error "TypeError: Cannot read property '0' of undefined TypeError: Cannot read property '0' of undefined at Object.eval [as updateRenderer] ... " 如果我尝试获取preguntas.respuestas [0],则会出现此错误“ TypeError:无法读取未定义的属性'0'TypeError:无法读取未定义的属性'0'在Object.eval [作为updateRenderer] ...”

What am I doing wrong? 我究竟做错了什么?

Thanks for reading! 谢谢阅读! :D :d

EDIT: 编辑:

import { Facebook, FacebookLoginResponse } from '@ionic-native/facebook';
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { LoginPage } from '../login/login';

import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/timeout';

@Component({
  selector: 'page-pregunta',
  templateUrl: 'pregunta.html'
})
export class PreguntaPage {
    userData = null;
    preguntas = {};
constructor(private facebook:Facebook ,  public http: Http) {
  }

ionViewDidLoad() {
    let path = 'assets/Items.json';
    let encodedPath = encodeURI(path);
    let timeoutMS = 10000;

    this.http.get(encodedPath)
    .timeout(timeoutMS)
    .map(res => res.json()).subscribe(data => {
let responseData = data;

this.preguntas = responseData;
    console.log(this.preguntas);
},
err => {
  console.log('error!!', err);
});
}}

You should to try something like this: 您应该尝试这样的事情:

let respuestas = []
...
responseData.respuestas.map(item => respuestas.push(item)).

and then try something like this: 然后尝试这样的事情:

console.log(respuestas[0])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM