【问题标题】:How to check if array attribute from JSON object is empty?如何检查 JSON 对象的数组属性是否为空?
【发布时间】:2017-07-27 13:05:16
【问题描述】:

我有这种 JSON 对象:

sections: 
[
    {
        "id":1,
        "title":"Description du projet",
        "content":[
            {
                label:'Type de projet',
                type:'select',
                values:[
                    {
                        label:'Achat',
                        options:[
                            {
                                label:'Neuf'
                            },
                            {
                                label:'Neuf + travaux'
                            },
                            {
                                label:'Ancien'
                            },
                            {
                                label:'Ancien + travaux'
                            },
                            {
                                label:'Terrain'
                            },
                            {
                                label:'Terrain + construction'
                            }
                        ]
                    },

我想检查是否定义了 "options" 数组,以便在每种情况下构建不同的组件。

有可能吗?如果是,你能告诉我怎么做吗?

提前谢谢你

【问题讨论】:

  • if(myObject.sections[0].content[0].values[0].options) { }
  • 所以你的组件中有多个sections,其中包含多个content 块,其中一些可能代表select 框,这可能会定义一个或多个options。而你的组件依赖于此?某些部分的某些内容块中的某些选择框是否有选项?
  • 是的,完全正确。这就是我的情况,我用它来构建我的 React 组件。你有什么问题吗?

标签: javascript json reactjs


【解决方案1】:

您可以使用 lodash 进行所有未定义或存在的检查。查看图书馆here

来到你的问题,使用 lodash 我会做这样的事情:

import _ from 'lodash';
let options = _.get(a, ['sections','0','content', '0', 'values', '0', 'options']);
if(!_.isUndefined(options)){
    //do your stuff
}

您可以使用 lodash 以多种方式做到这一点。如果路径不存在,您也可以取回默认值。

【讨论】:

    【解决方案2】:

    从 "sections" 到 "values" 迭代每个数组,然后我们将在那里进行检查。请参阅以下代码:

    sections.forEach(section =>{
      section.content.forEach(c => {
        c.values.forEach(value =>{
          if (!value.options) {
            // "options" array is undefined.
            return;
          }
    
          // "options" array is defined, build different components here.
        });
      });
    });
    

    【讨论】:

    • @Thomas 谢谢!我已经修好了。
    猜你喜欢
    • 2021-12-21
    • 2020-08-08
    • 2014-08-22
    • 2015-04-02
    • 1970-01-01
    • 2014-05-06
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多