【问题标题】:Loadash filter need to get exact matchLodash过滤器需要得到完全匹配
【发布时间】:2019-12-28 18:41:16
【问题描述】:

当尝试使用 Lodash 过滤数组时,我得到了该数组的所有元素。只需要获取特定的数组。请找到我目前的编码

var sizeList = [{
                    id: 1,
                    title: "Test1",
                    type: [{
                        name: "1.1",
                        present: false
                    }, {
                        name: "1.2",
                        present: true
                    }, {
                        name: "1.3",
                        present: false
                    }]
                }, {
                    id: 2,
                    title: "Test2",
                    type: [{
                        name: "2.1",
                        present: false
                    }, {
                        name: "2.2",
                        present: true
                    }, {
                        name: "2.3",
                        present: false
                    }]
                }, {
                    id: 3,
                    title: "Test3",
                    type: [{
                        name: "3.1",
                        present: false
                    }, {
                        name: "3.2",
                        present: true
                    }, {
                        name: "3.3",
                        present: true
                    }]
                }],
                result = _.filter(sizeList, {
                    type: [{
                        name: '3.3'
                    }]
                });

            console.log(result);

我的问题是,当我使用 name:3.3 过滤时,我得到了 Test3 数组中的所有元素,包括 3.1、3.2 和 3.3。我只需要3.3。谁能帮忙。

【问题讨论】:

    标签: lodash


    【解决方案1】:

    可以对过滤后的项进行类型映射,也可以对类型数组进行过滤:

    var sizeList = [{"id":1,"title":"Test1","type":[{"name":"1.1","present":false},{"name":"1.2","present":true},{"name":"1.3","present":false}]},{"id":2,"title":"Test2","type":[{"name":"2.1","present":false},{"name":"2.2","present":true},{"name":"2.3","present":false}]},{"id":3,"title":"Test3","type":[{"name":"3.1","present":false},{"name":"3.2","present":true},{"name":"3.3","present":true}]}];
    
    var result = _(sizeList)
      .filter({
        type: [{ name: '3.3' }]
      })
      .map(({ type, ...o }) => ({
        ...o,
        type: _.filter(type, { name: '3.3' })
      }))
      .value();
    
    console.log(result);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>

    【讨论】:

    • 非常感谢您的回答@Ori Drori.. :-)
    猜你喜欢
    • 2020-04-18
    • 2011-08-24
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多