Javascript在for循环中使用值作为对象键?
Posted
技术标签:
【中文标题】Javascript在for循环中使用值作为对象键?【英文标题】:Javascript use value in for loop as object key? 【发布时间】:2021-11-03 16:34:41 【问题描述】:我有一个如下所示的 json:
const sitesList =
"sites":
"miami":
"name": "Miami Beach"
,
"london":
"name": "London Bridge"
我还有一个以数组为参数的函数。此数组中的值可能是“london”、“miami”或两者兼而有之。这是函数:
async function readPDF2(sites)
for (const value of sites)
console.log(sitesList.sites.value.name);
函数调用如下:readPDF2(['miami']);
现在的问题是,当我执行 sitesList.sites.value.name
时,javascript 将 value
解释为 json 对象的实际部分。这是有道理的,但是我该如何解决呢?我希望它把 value
当作在 for 循环中声明的常量。
看这张图片:
我如何获得这个? 感谢您的任何意见!
【问题讨论】:
这能回答你的问题吗? Using variable keys to access values in JavaScript objects 将value
括在方括号中以将其用作计算结果为键的表达式:console.log(sitesList.sites[value].name);
谢谢@danh,这是我正在寻找的解决方案:)
Object.values(sitesList.sites).forEach((value)=>console.log(value.name))
【参考方案1】:
const sitesList =
"sites":
"miami":
"name": "Miami Beach"
,
"london":
"name": "London Bridge"
//If you need only Value then try this,
Object.values(sitesList.sites).forEach((value)=>console.log(value.name))
//If you need only Key then try this,
Object.keys(sitesList.sites).forEach(key=>console.log(key))
//If you need both Key and Value then try this,
Object.entries(sitesList.sites).forEach(([key, value]) => console.log(`$key: $value.name`))
【讨论】:
【参考方案2】:您可以使用Object.entries()
const sitesList =
"sites":
"miami":
"name": "Miami Beach"
,
"london":
"name": "London Bridge"
const sites = sitesList.sites;
for (const [key, value] of Object.entries(sites))
console.log(`Key: $key value: $value.name`)
或者你可以使用for in
const sitesList =
"sites":
"miami":
"name": "Miami Beach"
,
"london":
"name": "London Bridge"
const sites = sitesList.sites;
for (const site in sites)
console.log(`Key: $site value: $sites[site].name`)
【讨论】:
以上是关于Javascript在for循环中使用值作为对象键?的主要内容,如果未能解决你的问题,请参考以下文章
使用FileReader在Javascript中同步读取多个文件