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 时,javascriptvalue 解释为 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中同步读取多个文件

JavaScript 对象数字键特性实现桶排序

为啥不总是在 vue.js for 循环中使用索引作为键?

使用 for loop .splitlines 循环将键和值添加到字典

Python for 循环仅将最后一个列表作为值附加

javascript中数组取值的问题,如何取出键值对中的值?