[英]Get object key using async.each
我有一些JSON数据如下:
{
version: 1,
partitions: {
'0': [ 1616133379 ],
'1': [ 1616133378 ],
'2': [ 1616133380 ]
}
}
我使用async.each循环遍历数据,如下所示:
async.each(topicData.partitions, function(data, callback){
console.log('/brokers/topics/' + topic + '/partitions/' + data + '/state');
callback();
},
function(err){
if(err) {
console.log(err);
callback(err);
}
});
我得到的输出是:
'/ brokers / topics / testing / partitions / 1616133379 / state''/ brokers / topics / testing / partitions / 1616133378 / state''/ brokers / topics / testing / partitions / 1616133380 / state'
正如您所看到的,通过async.each
函数传递的data
项保持键/值对的值,而我实际上希望它传递键以产生此输出:
'/ brokers / topics / testing / partitions / 0 / state''/ brokers / topics / testing / partitions / 1 / state''/ broker / topics / testing / partitions / 2 / state'
无论如何我可以获得传递的密钥而不是价值吗?
这必须异步运行。
谢谢
您可以使用forEachOf
,迭代器会在对象的情况下传递每个项的值和键。
iterator(item,key,callback) - 一个应用于obj中每个项目的函数。 键是项的键,或者是数组的索引。 迭代器传递一个回调(err),一旦完成就必须调用它。 如果没有发生错误,则应该在没有参数或显式null参数的情况下运行回调。
用法:
async.forEachOf(topicData.partitions, function(item, key, callback){
console.log('/brokers/topics/' + topic + '/partitions/' + key + '/state');
callback();
}, function(err){
if(err) {
console.log(err);
callback(err);
}
});
试着把它放在你的循环中。
console.log(topicData.partitions.indexOf(data));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.