如何在React中过滤维数组

时间:2017-11-22 10:17:46

标签: arrays filter

我有像这样的维度数组

{
  "items": [
    {
      "id": "file",
      "value": "File",
      "childs": [
        {
          "value": "New",
          "status": 1
        },
        {
          "value": "New",
          "status": 2
        },
        {
          "value": "New",
          "status": 1
        }
      ]
    },
    {
      "id": "file",
      "value": "File",
      "childs": [
        {
          "value": "New",
          "status": 1
        },
        {
          "value": "New",
          "status": 2
        },
        {
          "value": "New",
          "status": 1
        }
      ]
    }
  ]
}

如何通过childs.status

过滤项目和自己的孩子

2 个答案:

答案 0 :(得分:1)

您必须使用filter方法根据特定测试过滤您的项目数组,在您找到状态3的情况下,这是一个有效的示例:



var json = {
        "items": [
            {
                "id": "file",
                "value": "File",
                "childs": [
                    {
                    "value": "New",
                    "status": 1
                    },
                    {
                    "value": "New",
                    "status": 2
                    },
                    {
                    "value": "New",
                    "status": 1
                    }
                ]
            },
            {
                "id": "file",
                "value": "File",
                "childs": [
                    {
                    "value": "New",
                    "status": 1
                    },
                    {
                    "value": "New",
                    "status": 3
                    },
                    {
                    "value": "New",
                    "status": 1
                    }
                ]
            }
        ]
    };
    
var result = json.items.filter(function(item) {

    item.childs = item.childs.filter( function (child) {
        return child.status === 3;
    });
    
    return item.childs.length > 0;

});

console.log({items: result});




答案 1 :(得分:-1)

我已经设置了一个repl,其中我已经抽出了过滤你的json的方法。你可以find it here;随意玩弄它。

@ younel的回答改变了原始数组,我还用他的方法更新了我的repl,以显示原始json是如何变异的。

本质

  • 查看items
  • 中的每个项目
  • 如果item中的孩子符合过滤条件,则保留该项目和已过滤的子项