从对象数组中获取索引
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 => res.dt_txt === "12:00");
或 findIndex 将返回搜索的索引。
【讨论】:
感谢您的回复。老实说,我需要更好地使用过滤器、地图等...我尝试了您提供的代码,但它似乎只返回长度 0 和 proto... findIndex 给我一个 -1以上是关于从对象数组中获取索引的主要内容,如果未能解决你的问题,请参考以下文章
如何从 UITableView 获取行索引,其中数组列表由追加到类