Lodash Фильтр элементов по значению свойства не в массиве - PullRequest
0 голосов
/ 31 января 2019

У меня есть массив объектов, которые я пытаюсь отфильтровать, используя 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'
}

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вы можете использовать _.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>
0 голосов
/ 31 января 2019

Похоже, у вас есть indexOf задом наперед;в настоящее время он ищет inUse внутри item.fieldID.

Попробуйте:

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