lodash#some 或许能帮到你。
检查谓词是否为集合的任何元素返回真值。一旦谓词返回真值,迭代就会停止。
假设有 sample-t1.js:
var jobsT1 = [
{
job_id: "1",
title: "Job 1",
description: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
department: "Department: Lorem ipsum dolor sit amet",
location: "Location: Lorem ipsum dolor sit amet"
},
{
job_id: "2",
title: "Job 2",
description: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
department: "Department: Lorem ipsum dolor sit amet",
location: "Location: Lorem ipsum dolor sit amet"
}
];
module.exports = {jobsT1};
和sample-t2.js:
var jobsT2 = [
{
job_id: "1",
title: "Job 1",
description: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
department: "Department: Lorem ipsum dolor sit amet",
location: "Location: Lorem ipsum dolor sit amet"
},
{
job_id: "3",
title: "Job 3",
description: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
department: "Department: Lorem ipsum dolor sit amet",
location: "Location: Lorem ipsum dolor sit amet"
}
];
module.exports = {jobsT2};
使用 lodash.some 方法两次,您可以轻松识别新的和已删除的工作,只是匹配他们的 id。
const _ = require('lodash');
var {jobsT1} = require('./sample-t1');
var {jobsT2} = require('./sample-t2');
var newJobs = [];
var removedJobs = [];
_.forEach(jobsT2, function (n, key) {
if(!_.some(jobsT1, {'job_id': n.job_id})) {
newJobs.push(n);
}
});
_.forEach(jobsT1, function (n, key) {
if(!_.some(jobsT2, {'job_id': n.job_id})) {
removedJobs.push(n);
}
});
console.log('New jobs:', JSON.stringify(newJobs, undefined, 2));
console.log('========');
console.log('Removed jobs:', JSON.stringify(removedJobs, undefined, 2));
有了这个结果:
New jobs: [
{
"job_id": "3",
"title": "Job 3",
"description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"department": "Department: Lorem ipsum dolor sit amet",
"location": "Location: Lorem ipsum dolor sit amet"
}
]
========
Removed jobs: [
{
"job_id": "2",
"title": "Job 2",
"description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"department": "Department: Lorem ipsum dolor sit amet",
"location": "Location: Lorem ipsum dolor sit amet"
}
]