我有这个node.js代码:
var json2 = JSON.parse(body2);
console.log(json2)
var arrFound2 = Object.keys(json2).filter(function(key2) {
console.log(json2[key2].id)
return json2[key2].id;
}).reduce(function(obj2, key2){
obj2 = json2[key2].attempts[0].duration;
console.log(obj2)
return obj2;
}, {});
//console.log(arrFound);
callback(null, arrFound2);
});当我运行它时,console.log(json2)返回json,但console.log(json2[key2].id)返回undefined。我在这里做错了什么?
这是我的JSON:
{ id: 'local-1517179209543',
name: 'TeraGen (5MB) 30146960-047c-11e8-afb5-17a9edeb2d55',
attempts:
[ { startTime: '2018-01-28T22:40:07.941GMT',
endTime: '2018-01-28T22:40:17.739GMT',
lastUpdated: '2018-01-28T22:40:17.000GMT',
duration: 9798,
sparkUser: 'paulcarron',
completed: true,
endTimeEpoch: 1517179217739,
startTimeEpoch: 1517179207941,
lastUpdatedEpoch: 1517179217000 } ] }发布于 2018-01-29 17:11:09
下面是你需要做的:
您只需要return json2[key2];,而不是传递return json2[key2].id;
运行代码片段,您就会明白了
var json2 = {
id: 'local-1517179209543',
name: 'TeraGen (5MB) 30146960-047c-11e8-afb5-17a9edeb2d55',
attempts:
[ { startTime: '2018-01-28T22:40:07.941GMT',
endTime: '2018-01-28T22:40:17.739GMT',
lastUpdated: '2018-01-28T22:40:17.000GMT',
duration: 9798,
sparkUser: 'paulcarron',
completed: true,
endTimeEpoch: 1517179217739,
startTimeEpoch: 1517179207941,
lastUpdatedEpoch: 1517179217000 } ] };
console.log(json2);
var arrFound2 = Object.keys(json2).filter(function(key2) {
console.log(key2 , ' -----> ', json2[key2]);
return json2[key2];
}).reduce(function(obj2, key2){
obj2 = json2[key2].attempts[0].duration;
console.log(obj2)
return obj2;
}, {});
//console.log(arrFound);
callback(null, arrFound2);
发布于 2018-01-29 17:05:35
console.log(json2[key2].id)错误,因为筛选器函数将数组传递给回调函数。您正在链接Object.keys( json2 )上的filter函数,这意味着filter函数将获得json2对象的键。要获得JSON的值,只需使用json2[key2]
https://docs.microsoft.com/en-us/scripting/javascript/reference/filter-method-array-javascript
https://stackoverflow.com/questions/48497315
复制相似问题