gpt4 book ai didi

javascript - NodeJS |循环 JSON 给出 undefined

转载 作者:行者123 更新时间:2023-12-03 05:11:44 24 4
gpt4 key购买 nike

我这里有一段代码:

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

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

JSON:http://pastebin.com/6ZaVG4Xc

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

最佳答案

您没有console.log做正确的事情。

使用:console.log(obj.prices[i]);

更新:

要访问每个单独的值(即日期、价格等),请使用以下命令:

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]);
}

jsfiddle

更新2:

价格数据构造为对象数组而不是数组数组可能会有所帮助。无论哪种方式,您都可以执行一些操作,例如按日期排序,但您可能会发现更容易推理对象数组,同时也更不容易出错。

["2015 年 6 月 2 日 01: +0",3.931,"27070"]

{
"日期": "2015 年 6 月 2 日 01: +0",
“价格”:“3.931,
“金额”:“27070”
}

然后您可以使用自定义排序函数根据日期进行排序:

var sorted_prices = prices.sort(function(a, b){
a = new Date(a.date),
b = new Date(b.date);
return a - b;
});

updated jsfiddle

如果您想将结构保留为数组数组,只需将不同的值传递给new Date即可。

a = new Date(a[0]),
b = new Date(b[0]);

顺便说一句,在处理这样的大型数据集时,正则表达式会派上用场。如果您还不知道正则表达式,我使用以下正则表达式将您的数组数组转换为对象数组:

查找:\["(.*?)",(.*?),"(.*?)"\]替换:{"date": "$1", "price": $2, "amount": $3}

要了解有关正则表达式的更多信息,我推荐 this course .

更新:

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
}
]
]

关于javascript - NodeJS |循环 JSON 给出 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41784520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com