【问题标题】:cant iterate over JSON with typescript/javascript无法使用 typescript/javascript 遍历 JSON
【发布时间】:2020-11-25 15:06:20
【问题描述】:

我有一个具有不同字段名称的 JSON 文档(27_sourcename0、27_sourcename1 ...)。 为了检查字段名是否存在,我创建了一个字段名数组(this.sourcenames27)。

所以我想检查字段名称是否存在以获取值“image.jpg”。

this.document = { 
  _source: {
             ID: "55",
             27_sourcename0: "image.jpg"
             27_sourcename1: "image.jpg"
           }
}


this.sourcenames27 = [
      {
        sourceName: '27_sourcename0',
      },
      {
        sourceName: '27_sourcename1',
      },
      {
        sourceName: '27_sourcename2',
      },
]

//this doesnt work
for (let item of this.sourcenames27) {
console.log(this.document['_source'] + item.sourceName);
   if (this.document['_source'] + item.sourceName) {
      console.log('jeah it exists');
   }
}

// this works well
console.log(this.document['_source']['27_sourcename1']

当我使用时,我得到了价值

this.document['_source']['27_sourcename1']

但是当我遍历 this.sourcenames27 数组时,我无法获得值。 我在这里忽略了什么?

预期输出: 图片.jpg, 图片.jpg

【问题讨论】:

  • this.document['_source'] 解析为一个对象,其中包含三个键。对对象执行+ 没有意义。如果您尝试动态访问对象的属性,则必须执行 [variable] 访问。您正在迭代的事实不是这里的主要问题。是你误解了表单中的对象访问不起作用
  • this.document['_source'][item.sourceName]

标签: javascript json typescript


【解决方案1】:

尝试像this.document['_source'][item.sourceName]一样访问,而不是使用+运算符,您尝试像{} +字符串类型。

this.document = { 
    _source: {
        ID: "55",
        27_sourcename0: "image.jpg"
        27_sourcename1: "image.jpg"
    }
  }
    
  this.sourcenames27 = [
        {
          sourceName: '27_sourcename0',
        },
        {
          sourceName: '27_sourcename1',
        },
        {
          sourceName: '27_sourcename2',
        },
  ]
  
 
  for (let item of this.sourcenames27) {
    console.log(this.document['_source'][item.sourceName]); //Note here
     if (this.document['_source'][item.sourceName]) { // Note here
        console.log('jeah it exists');
     }
  }
  
  // this works well
  console.log(this.document['_source']['27_sourcename1']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 2016-08-07
    • 1970-01-01
    相关资源
    最近更新 更多