Javascript NodeJS |通过JSON循环给出未定义的

Javascript NodeJS |通过JSON循环给出未定义的,javascript,node.js,Javascript,Node.js,我这里有一段代码: var obj = JSON.parse(fs.readFileSync('config.json', 'utf8')); for(var i = 0; i < obj.prices.length; i++){ console.log(obj[i]); } JSON: 如果我得到的价格,它显示我在控制台未定义。为什么会这样?尝试更换: console.log(obj[i]); 与: 你没有登录正确的东西 用法:console.logobj.prices[i

我这里有一段代码:

var obj = JSON.parse(fs.readFileSync('config.json', 'utf8'));

for(var i = 0; i < obj.prices.length; i++){
    console.log(obj[i]);
}
JSON:

如果我得到的价格,它显示我在控制台未定义。为什么会这样?

尝试更换:

console.log(obj[i]);
与:

你没有登录正确的东西

用法:console.logobj.prices[i]

更新:

var prices = [
  "May 27 2015": [
    {
      "price": 0.292,
      "amount": 888
    },
    {
      "price": 0.242,
      "amount": 118
    }
  ],
  "May 28 2015": [
    {
      "price": 0.492,
      "amount": 88228
    },
    {
      "price": 0.142,
      "amount": 1118
    }
  ]
]
要访问每个单独的值,即日期、价格等,请使用以下命令:

for(var i = 0; i < obj.prices.length; i++){
    console.log('Date', obj.prices[i][0]);
    console.log('Price', obj.prices[i][1]);
    console.log('Amount', obj.prices[i][2]);
}
如果希望将结构保持为数组数组,只需将不同的值传递到新的日期

另外,当处理像这样的大型数据集时,正则表达式非常方便。如果您还不知道正则表达式,我将您的数组转换为具有以下正则表达式的对象数组:

查找:\[.*,.*,..\] 替换:{日期:$1,价格:$2,金额:$3}

要了解更多关于regex的信息,我推荐

更新:

var prices = [
  "May 27 2015": [
    {
      "price": 0.292,
      "amount": 888
    },
    {
      "price": 0.242,
      "amount": 118
    }
  ],
  "May 28 2015": [
    {
      "price": 0.492,
      "amount": 88228
    },
    {
      "price": 0.142,
      "amount": 1118
    }
  ]
]

您没有访问循环中的prices数组:

for(var i = 0; i < obj.prices.length; i++){
  console.log(obj.prices[i]);
}

您正在迭代obj.prices,但正在访问obj.Will会在9分钟内接受您的答案。@PhilipScroth没问题。我已经发布了最新消息。请根据需要使用JSFIDLE。也许这样问有点不好,但是否可以按日期获取数据?基本上它会得到第一个日期,然后得到日期的所有值,然后是第二个日期等等。你控制config.json的结构吗?是的,我控制。对的
var prices = [
  "May 27 2015": [
    {
      "price": 0.292,
      "amount": 888
    },
    {
      "price": 0.242,
      "amount": 118
    }
  ],
  "May 28 2015": [
    {
      "price": 0.492,
      "amount": 88228
    },
    {
      "price": 0.142,
      "amount": 1118
    }
  ]
]
for(var i = 0; i < obj.prices.length; i++){
  console.log(obj.prices[i]);
}