我需要遍历一个非常深的对象,我需要提取不同深度的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] } ] }
修改:已更新
答案 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]);
}