【问题标题】:Javascript use value in for loop as object key?Javascript在for循环中使用值作为对象键?
【发布时间】: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 循环中声明的常量。

看这张图片:

我如何获得这个? 感谢您的任何意见!

【问题讨论】:

  • value 括在方括号中以将其用作计算结果为键的表达式:console.log(sitesList.sites[value].name);
  • 谢谢@danh,这是我正在寻找的解决方案:)
  • Object.values(sitesList.sites).forEach((value)=>{console.log(value.name)})

标签: javascript json for-loop for-of-loop


【解决方案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}`)
    }

    【讨论】:

      猜你喜欢
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 2019-06-29
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多