从对象数组中获取索引

Posted

技术标签:

【中文标题】从对象数组中获取索引【英文标题】:getting an index from an array of objects 【发布时间】:2020-05-04 22:00:38 【问题描述】:

我正在为一个项目使用 openweather api,并且数据会根据您查看它的时间而波动。因此,我试图遍历前 8 个对象以找到 dt_txt = 到 12:00:00。我需要将结果分配给一个 var,这样我就可以将它增加 8。

这是数据的来源(仅限第一个索引):

0:
dt: 1579316400
main: temp: 271.29, feels_like: 259.49, temp_min: 271.29, temp_max: 272.35, pressure: 1026, …
weather: […]
clouds: all: 100
wind: speed: 13.55, deg: 147
snow: 3h: 5
sys: pod: "n"
dt_txt: "2020-01-18 03:00:00"
__proto__: Object 

我的尝试:

for (let i = 0; i < 8; i++) 
  if ((response.list[i].dt_txt).substring(11) === "12:00:00") 
    var noon = indexOf("12:00:00")
    console.log(noon);

提前致谢!

编辑 我以为我遗漏了一些明显的东西!

工作代码:

for (let i = 0; i < 8; i++) 
                if ((response.list[i].dt_txt).substring(11) === "12:00:00") 
                    var noon = response.list[i]
                    console.log(noon);
                    var noon2 = response.list[i + 8]
                    console.log(noon2);

【问题讨论】:

如果您只需要知道在response.list 的哪个索引处找到dt_txt 值与12:00:00 匹配的对象,为什么不直接使用循环计数器变量i?此外,这是错误的 - var noon = indexOf("12:00:00")indexOf 适用于数组或字符串对象。 谢谢 Manish Giri,你是对的,我很傻! 【参考方案1】:

阅读 javascript 数组方法 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)

例如filter 将从列表中返回满足您条件的对象。 const result = response.list.filter(res =&gt; res.dt_txt === "12:00");

或 findIndex 将返回搜索的索引。

【讨论】:

感谢您的回复。老实说,我需要更好地使用过滤器、地图等...我尝试了您提供的代码,但它似乎只返回长度 0 和 proto... findIndex 给我一个 -1

以上是关于从对象数组中获取索引的主要内容,如果未能解决你的问题,请参考以下文章

如何从 UITableView 获取行索引,其中数组列表由追加到类

在 Swift 3.0 中,没有在数组中的索引处获取对象的键值语法

如何使用角度获取数组中对象的索引?

如何在不使用PHP的循环的情况下获取对象数组的索引

firebase 按索引从字段数组中删除对象

使用索引从对象数组中删除对象? [复制]