lodash:数组过滤和对象排除
lodash: array filter and exclude by object
我有 Array a
个 个问题:
[
{id: 1,name: "Question 1"},
{id: 2,name: "Question 2"},
{id: 3,name: "Question 3"},
]
和 答案 的 Array b
,其中 属性 question_id
引用 属性 id
Array a
:
[
{id: 1, question_id: 2,name: "My Answer to Question 2"}
]
使用 lodash,我想过滤 Array a
以排除所有引用它的 Answers,期望输出:
[
{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' } ]
我有 Array a
个 个问题:
[
{id: 1,name: "Question 1"},
{id: 2,name: "Question 2"},
{id: 3,name: "Question 3"},
]
和 答案 的 Array b
,其中 属性 question_id
引用 属性 id
Array a
:
[
{id: 1, question_id: 2,name: "My Answer to Question 2"}
]
使用 lodash,我想过滤 Array a
以排除所有引用它的 Answers,期望输出:
[
{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' } ]