Javascript lodash:按对象过滤和排除数组

Javascript lodash:按对象过滤和排除数组,javascript,lodash,Javascript,Lodash,我有一系列问题: 以及答案的数组b,其中属性问题id引用数组a的属性id: [ {id: 1, question_id: 2,name: "My Answer to Question 2"} ] 使用lodash,我想过滤数组a,排除引用它的所有答案,并期望得到以下输出: [ {id: 1,name: "Question 1"}, {id: 3,name: "Question 3"}, ] 简短的回答 不客气。仅供参考,这只能通过香草JS实现。所以,如果你只是为了这个而加载Lod

我有一系列问题:

以及答案的
数组b
,其中属性
问题id
引用
数组a
的属性
id

[
  {id: 1, question_id: 2,name: "My Answer to Question 2"}
]
使用lodash,我想过滤
数组a
,排除引用它的所有答案,并期望得到以下输出:

[
  {id: 1,name: "Question 1"},
  {id: 3,name: "Question 3"},
]
简短的回答


不客气。仅供参考,这只能通过香草JS实现。所以,如果你只是为了这个而加载Lodash,最好只使用香草JS。
[
  {id: 1,name: "Question 1"},
  {id: 3,name: "Question 3"},
]
var questions = [
    {id: 1,name: "Question 1"},
    {id: 2,name: "Question 2"},
    {id: 3,name: "Question 3"},
];

var answers = [
    {id: 1, question_id: 2,name: "My Answer to Question 2"}
];

var filtered = _.filter(questions, isNotReferencedByAnyAnswer);

function isNotReferencedByAnyAnswer(question) {
    return _.findIndex(answers, {'question_id': question.id}) === -1;
}
arr = [
       {id: 1,name: "Question 1"},
       {id: 2,name: "Question 2"},
       {id: 3,name: "Question 3"},
]
arr1 = [
  {id: 1, question_id: 2,name: "My Answer to Question 2"}
]
_.differenceWith(arr, arr1, (arrVal, othVal) => arrVal.id === othVal.question_id)

// result

[ { id: 1, name: 'Question 1' }, { id: 3, name: 'Question 3' } ]