Node JS Undefined变量

时间:2017-09-20 07:33:52

标签: javascript arrays json node.js

我有一个函数,它应该遍历一个JSON文件,获取值并将它们推送到一个新数组。

我已在函数外声明了数组,如下所示:

var output = [];

function get_json(jsonObj) {
    console.log("Out put => " + output);

    for (var x in jsonObj) {
        if (typeof (jsonObj[x]) == 'object') {
            get_json(jsonObj[x]);
        } else {
            output.push({
                key: x,
                value: jsonObj[x]
            });
            //console.log(output);
        }
    }
    return output;
}

调用上述函数并将其传递到json数据中,如下所示:

var result = get_json(jsonObj);

应该返回一个包含值,键和值的数组。但是,当我将数据推送到函数时,我得到输出变量未定义,因此它无法创建数组,从而导致失败。 我怎样才能声明数组?宣布它的最佳位置是什么?

1 个答案:

答案 0 :(得分:4)

你正在尝试做一个递归函数。您可以在函数内部移动output声明并在最后返回它,但不要忘记在每次迭代时填充它(即使用concatpush)。我更喜欢这个版本而不是全局变量,因为它更清晰,并且避免了你似乎有的冲突。

function get_json(jsonObj) {
  var output = [];

  for (var x in jsonObj) {
    if (typeof(jsonObj[x]) === 'object') {
      output = output.concat(get_json(jsonObj[x]));
    } else {
      output.push({
        key: x,
        value: jsonObj[x]
      });
    }
  }

  return output;
}

console.log(get_json({
  person: {
    name: 'John Doe',
    age: 26,
    stuff: [{
        name: 'Big Sword'
      },
      {
        name: 'Yoyo'
      }
    ]
  },
  city: 'New York'
}));