我有userCurrentContainer = [[],[{"1":"xyz"},{"2":"abc"}],[{"1":"xyz"}],[]]
我希望按键分组,以便输出看起来像:{ 1: xyzxyz, 2: abc}
我正在使用异步库。 我理解分组逻辑.. 但我的问题是当一切都完成然后我会回调.. 但是在打电话之前......
function grupbyContainerId(userCurrentContainer,callback){
var track=0;
var temp=new Array();
async.eachSeries(userCurrentContainer, function (key,callback1) {
track=track+1
if(key.length>0){
var innertrack=0;
async.eachSeries(key, function (key1,callback2) {
innertrack=innertrack+1
//logic here
if(track>=userCurrentContainer.length&&innertrack,key.length>=key.length){
console.log("if calledd ---------->");
callback(null,temp)
}
callback2();
})
}
callback1();
});
}
答案 0 :(得分:1)
请接受http://caolan.github.io/async/docs.html#eachSeries 它应该有3个参数。尝试类似的东西:
function doSomeAction() {
var someNestedArray = [[],[{key:'value1'}],[],[{key:'value2'}]];
async.eachSeries(someNestedArray, function (item, next) {
async.eachSeries(item, function (deepObj, cb) {
console.log(deepObj)
cb()
}, function (err, result) {
next();
})
}, function (err, res) {
console.log('AllWorkDone');
})}
答案 1 :(得分:0)
根据您提供的基本输入/输出示例来判断,我认为使用reduce可能更适合您。 E.g。
const input = [[],[{"1":"xyz"},{"2":"abc"}],[{"1":"xyz"}],[]];
const output = input.reduce(function (acc, value) {
for (let val of value) {
acc[Object.keys(val)] = val[Object.keys(val)] + (acc[Object.keys(val)] || '');
}
return acc;
}, {});
console.log(output);