for循环只运行一次

时间:2018-01-10 12:48:11

标签: javascript ecmascript-6

我需要遍历一个非常深的对象,我需要提取不同深度的12个值。我的计划是用每个深度的值提取,但我在第一个深度有问题。

我对行为有点困惑。 我想这个:

   for (const key of Object.keys(jsonData)){
    console.log(i+1);
    if (isWantedValue(key))
    {
        artifactColl[key] = jsonData[key];
    }
    console.log(key, jsonData[key]);
}
for循环的

将为它在对象内找到的每个关键元素运行一个循环,但循环只运行一次。它使用较低的console.log函数打印出所有必需的键值,但它只调用isWantedValue函数一次。 可以请有人向我解释一下吗?

对象看起来像这样:

{ searchNGResponse: 
  { totalCount: [ '420' ],
    from: [ '-1' ],
     count: [ '-1' ],
     tooManyResults: [ 'false' ],
     collapsed: [ 'false' ],
     repoDetails: [ [Object] ],
     data: [ [Object] ] } }

控制台输出:

  1
  called with searchNGResponse
  searchNGResponse { totalCount: [ '416' ],
  from: [ '-1' ],
  count: [ '-1' ],
  tooManyResults: [ 'false' ],
  collapsed: [ 'false' ],
  repoDetails: [ { 'xxx': [Object] } ],
  data: [ { artifact: [Object] } ] }

修改:已更新

1 个答案:

答案 0 :(得分:0)

您的jsonData对象只有一个键,因为控制台输出显示:searchNGResponse

你想要的是那个对象的键,searchNGResponse对象,特别是这样的jsonData.searchNGResponse

for (const key of Object.keys(jsonData.searchNGResponse)){
    console.log(i+1);
    if (isWantedValue(key))
    {
        artifactColl[key] = jsonData.searchNGResponse[key];
    }
    console.log(key, jsonData.searchNGResponse[key]);
}