【问题标题】:Lodash Filter items by property value not in an arrayLodash 按不在数组中的属性值过滤项目
【发布时间】:2019-01-31 00:27:48
【问题描述】:

我有一个对象数组,我正在尝试使用 lodash 进行过滤。最终目标是从数组中返回属性值不在另一个数组中的任何对象。

let inUse = ['1','2'];
let positionData = [{ 
    fieldID: '1',
    fieldName: 'Test1'
},
{ 
    fieldID: '2',
    fieldName: 'Test2'
},
{ 
    fieldID: '3',
    fieldName: 'Test3'
}]

// Only show me position data where the fieldID is not in our inUse array
const original = _.filter(positionData, item => item.fieldID.indexOf(inUse) === -1);

我尝试使用indexOf,但我不认为我在这种情况下正确使用它。

预期结果:

original = { 
 fieldID: '3',
 fieldName: 'Test3'
}

【问题讨论】:

    标签: javascript lodash


    【解决方案1】:

    看起来您的indexOf 倒置了;目前,它正在item.fieldID 内部寻找inUse

    试试这个:

    const original = _.filter(positionData, item => inUse.indexOf(item.fieldID) === -1);
    

    【讨论】:

      【解决方案2】:

      你可以使用_.differenceWith():

      const inUse = ['1','2'];
      const positionData = [{"fieldID":"1","fieldName":"Test1"},{"fieldID":"2","fieldName":"Test2"},{"fieldID":"3","fieldName":"Test3"}];
      
      const result = _.differenceWith(
        positionData, 
        inUse, 
        ({ fieldID }, id) => id === fieldID
      );
      
      console.log(result);
      <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

      【讨论】:

        猜你喜欢
        • 2016-03-30
        • 2016-05-12
        • 2017-06-09
        • 1970-01-01
        • 1970-01-01
        • 2019-05-04
        • 1970-01-01
        • 1970-01-01
        • 2020-04-27
        相关资源
        最近更新 更多