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' } ]