【问题标题】: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,你是对的,我很傻!

标签: javascript arrays object for-loop indexing


【解决方案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
猜你喜欢
  • 1970-01-01
  • 2012-02-21
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
相关资源
最近更新 更多