【问题标题】:how to use find in a JSON如何在 JSON 中使用 find
【发布时间】:2017-01-04 22:22:52
【问题描述】:

我有这个 JSON

{
    "_id": "586baa68734d1d7bf4f06432",
    "topic": 1,
    "story": {
        "2016-01-01": 152,
        "2016-01-02": 203,
        "2016-01-03": 419,
        "2016-01-04": 792,
        "2016-01-05": 457,
        "2016-01-06": 350,
        "2016-01-07": 666
       }
}

这个函数打印出这个 JSON

exports.getData = function(req, res){
    Top10.find({},function(err, docs){
        console.log("docs "+docs);
        res.json(docs);
    });
}

现在我想获取特定日期的 NUMBER - 比如说 2016-01-01 我想取回 152

我该怎么做?

【问题讨论】:

  • docs["story"]["2016-01-01"]
  • @JonasKöritz 感谢您的回答!我试过 console.log("docs "+docs["story"]['2016-01-01']);它仍然无法正常工作

标签: arrays json node.js


【解决方案1】:

要访问嵌套元素,请尝试以下操作:

var date = "2016-01-01";
var number = docs["story"][date];

如果 docs 是一个数组(访问第一个元素):

var date = "2016-01-01";
var numbers = [];
for(var i = 0; i < docs.length; i++) {
     if(docs[i]["story"][date]) {
         numbers.push(docs[i]["story"][date]);
     }
}
console.log(numbers);

【讨论】:

  • 文档里面有什么?您可以发布 docs 变量的转储吗?
  • 所以 docs 是一个数组,我的第二个代码块应该可以工作。如果您想要数组的所有项目,则必须循环遍历 docs 数组。
  • @JonasKöritz 我们可以得到数组的所有项目吗?
  • @JonasKöritz 我试过你的代码,但它给我写了一个错误:“无法读取 undefind 的属性 '2016-01-01'
  • @JonasKöritz 知道你
猜你喜欢
  • 2021-11-04
  • 1970-01-01
  • 2022-11-01
  • 2013-05-09
  • 2015-10-28
  • 2016-12-15
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多