代码之家  ›  专栏  ›  技术社区  ›  pac

安慰日志(json2[key2].id)未定义

  •  0
  • pac  · 技术社区  · 7 年前

    我有这个节点。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) 返回未定义的。我做错了什么?

    这是我的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 } ] }
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Vivek Doshi    7 年前

    以下是您需要做的事情:

    而不是通过 return json2[key2].id; 你只需要 return json2[key2];

    运行代码片段,你就会明白

    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);
        2
  •  1
  •   Hassaan    7 年前

    console.log(json2[key2].id) 错误,因为filter函数将数组传递给回调函数。您正在对象上链接筛选器函数。键(json2),这意味着过滤器函数将获取json2对象的键。 要获得JSON的值,只需使用 json2[key2]

    https://docs.microsoft.com/en-us/scripting/javascript/reference/filter-method-array-javascript