我有一个对象定义为

{
    "query" :
    {
        /* snip */
    },
    "aggs":
    {
        "times" :
        {
            "date_histogram" :
            {
                "field" : "@timestamp",
                "interval" : "15m",
                "format" : "HH:mm",
                "min_doc_count" : 0
            }
        }
    }
};


如何判断interval中的aggs.times.date_histogram是否存在,以便可以对其进行操作?

澄清:我不确定interval的任何父对象是否存在。

最佳答案

假定该值始终是一个非空白字符串,请对其进行真实性测试:

if (aggs.times.date_histogram.interval) {
    // Use it
}


您可能会缓存那些属性查找的结果。尽管对性能的影响并不大,但对于代码的可维护性可能很有用:

var interval = aggs.times.date_histogram.interval;
if (interval) {
    // Use it
}


如果您担心每个级别可能都不存在,它将变得更加冗长:

if (aggs &&
    aggs.times &&
    aggs.times.date_histogram &&
    aggs.times.date_histogram.interval) {
    // Use it
}


a question with several answers关于为此编写函数。

07-26 08:43