当前位置: 首页 > 知识库问答 >
问题:

从由数组组成的对象中获取值

蒋曾笑
2023-03-14

我有一个对象只包括一个数组(17)。我想从这个数组中得到特定的值,例如index=4-

我怎样才能得到它?

我通过运行以下命令获得控制台结果:

this.temp = this.flights['states'];
console.log(this.temp);
console.log(typeof this.temp);

我的对象this.flights的形式

{time: 1523183848, states: Array(1)}
states: [Array(17)]
time: 1523183848 
__proto__: Object

当我调用this.flights['states]时,我得到:

[Array(17)]

最后,在调用this.flights['states'][0][4]时,我收到一个错误:

ERROR TypeError: Cannot read property '0' of undefined

正在启动我从Opensky网络Api获取的flights对象:

{
    "time": 1523183840,
    "states": [
        [
            "89906e",
            "EVA857  ",
            "Taiwan",
            1523183838,
            1523183839,
            121.2966,
            25.1178,
            716.28,
            false,
            111.38,
            50.06,
            8.78,
            null,
            746.76,
            null,
            false,
            0
        ]
    ]
}

共有2个答案

章高爽
2023-03-14

显然,您正在异步获取飞行数据,但您的代码试图在可用之前访问它。

我在下面添加了一个使用window.setTimeout模拟异步数据获取的示例。希望这能解决你的问题。

let obj = {
  getData() {
    // this will fill your flights objects after 2 seconds
    setTimeout(() => {
      obj.flights = {"time": 1523183840, "states": [["89906e", "EVA857  ", "Taiwan", 1523183838, 1523183839, 121.2966, 25.1178, 716.28, false, 111.38, 50.06, 8.78, null, 746.76, null, false, 0]]}
    }, 200)
  },
  flights: undefined
}

obj.getData() // will fetch the data and after 200 milliseconds obj.flights will be available

console.log(obj.flights) // but not now!! returns undefined

setTimeout(function() {
  console.log(obj.flights.states[0][4])
}, 500)
古起运
2023-03-14

工作代码如下。

在这样的对象上访问数组元素this.temp=this.flights.states[0][4];

按如下方式操作:

var flights = {"time":1523183840,"states":[["89906e","EVA857  ","Taiwan",1523183838,1523183839,121.2966,25.1178,716.28,false,111.38,50.06,8.78,null,746.76,null,false,0]]};



this.temp = this.flights.states[0][4];
console.log(this.temp);
console.log(typeof this.temp);
 类似资料:
  • 有一个名为的类。 并且我有一个对象的数组。我现在需要的是将该数组中所有对象的s提取到一个新数组中。 我也发现了这个类似的问题。但是它是在Objective-C中的,所以它使用来实现这一点。 我怎么能在斯威夫特做到这一点呢?

  • 问题内容: 有一个叫的课程。 而且我有一系列对象。我现在需要将数组中所有这些对象的s 提取到新数组中。 我也发现了类似的问题。但是它在Objective-C中,因此可以用来完成此任务。 如何在Swift中执行此操作? 问题答案: 您可以使用方法,将某种类型的数组转换为另一种类型的数组-在您的情况下,从的数组转换为的数组:

  • 我有这个初始数组,希望根据和提取重复航班 我写了这个,但我只能得到第一个重复的,看起来不是很漂亮。 有什么建议吗?

  • 如何从对象获取数组?我试图进入空数组,这样我就可以验证它的空状态。 输出

  • 问题内容: 我的arraylist包含String数组对象。我如何获得所有价值?我的代码如下 如果我尝试像上面给出的那样进行检索, 怎么做? 问题答案: 您还必须遍历字符串数组。

  • 我的程序有一个对象类。Person对象由一个String(这是一个人的名字)和一个6元素字符串数组组成。数组保存用户输入的值,以对6种不同的运动进行排名,从最优选到最不优选。 例如,名为的Person对象可以由一个设置为的字符串和一个数组组成,每个元素如下。(列出的第二项运动是鲍勃最喜欢的运动,最后一项是他最不喜欢的运动)。 可以使用以下代码创建该示例对象: 这里是Person类: 每次新用户输入