javascript - 使用动态键访问 Javascript 对象值
问题描述
当密钥是动态的时,如何处理访问 JSON 响应中的对象?
在我的代码示例中,我创建了一个进行 API 调用但需要参数才能工作的减速器:
import { fetchAPI } from '../lib/api'
export async function resultsReducer(dataType, sortParam, nodeFields) {
let allResults = []
let fetch = await fetchAPI(`
query {
${dataType} (sortBy: ${sortParam}) {
pageInfo {
hasNextPage
startCursor
endCursor
}
edges {
node {
${nodeFields}
}
cursor
}
totalCount
}
}
`)
// How I access the dataType key - this doesn't work
fetch.dataType.edges.map( (item) => {
allResults.push(item)
})
}
该函数有效,它返回一个响应,该响应fetch
如下所示:
{
allLocationss: {
pageInfo: {
hasNextPage: true,
startCursor: 'YXJyYXljb25uZWN0aW9uOjA=',
endCursor: 'YXJyYXljb25uZWN0aW9uOjE5'
},
edges: [
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object], [Object],
[Object], [Object]
],
totalCount: 52
}
}
在我的示例响应中,allLocationss
是键,但有时它是allTopics
orallEvents
等。如果我使用,Object.keys(fetch)[1]
我会返回一个字符串。我也试过fetch.Object.keys(fetch)[1].edges
,但这也不起作用。会喜欢一些想法
解决方案
要在响应中访问动态密钥,请使用variable[key]
符号
// How I access the dataType key?
fetch[dataType].edges.map((item) => {
allResults.push(item);
});
推荐阅读
- html - 如何根据内容设置 div 标签的样式?
- javascript - How to bypass React's error handling of colors
- laravel - 作业总是在 laravel 作业中失败 Redis 速率限制
- django - Django: "auto_now_add=True" giving incorrect time
- react-native - react navigation back button back to spalsh screen
- swift - I can't get an arc to fill in Swift 4
- c++ - 为什么我无法构建静态链接的单线程 Boost 库?
- python-3.x - Python3 pip install git-pre-push-hook
- css - Make button all the same sizes
- excel - Excel Multiple Criteria