javascript select 变化的对象键

javascript select object key that changes

我正在使用 mediaWiki API 获取随机文章,例如:

https://en.wikipedia.org/w/api.php?action=query&generator=random&grnnamespace=0&format=json&grnlimit=1

响应示例:

{
  "batchcomplete": "",
  "continue": {
  "grncontinue": "0.630140535217|0.63014105781|6813083|0",
  "continue": "grncontinue||"
  },
  "query": {
    "pages": {
     "2374863": {
       "pageid": 2374863,
       "ns": 0,
       "title": "Khvalynsk culture"
     }
    }
  }
}

当我把它变成一个 javascript 对象时,我得到这个:

query: {
        pages: {
            31676967: { // <-- changes each request
                pageid: 31676967, // <-- changes each request
                ns: 0,
                title: "HP Neoview"
            }
        }
    }

我用<--标记的键和值在每次获取时都会改变。 如何获得标有 <-- 的键或标有 <-- 的值。我不能 select 像这样:

query.pages.31676967.pageid

因为数字变了。我试过这个:

query.pages[0].pageid

但只是 returns 未定义。有人知道我该怎么做吗?

Object.keys(query.pages)[0].pageid;

Getting the first index of an object

如果 pages 对象中始终只有一页,您可以使用 Object.values 方法获取它的值:

let query = {
    pages: {
        '31676967': {
            pageid: 31676967,
            ns: 0,
            title: "HP Neoview"
        }
    }
};

let id = Object.values(query.pages)[0].pageid;

console.log(id);

我在我的一个项目中使用了 for ... in 语法,该项目使用了维基媒体 API 的随机文章功能。由于您的 API 调用总是 returns 一个结果,您可以访问随机文章的 title 属性,如:

for (x in query.pages) {
  console.log(x.title);  // title: "HP Neoview"
}

如果您想修改 API 调用以获取多篇随机文章,这也适用。