lodash#some也许可以帮助你。
检查谓词是否返回任何集合元素的真值。一旦谓词返回真,迭代就会停止。
假设有样品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};
和样品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"
}
]
应该是什么样子的结果,你期待什么呢? –
我猜想一个新的数组的所有新的和删除的对象(作业)与一个新的属性,标识每个对象为“新”或“删除”。我可以从那里拿走它。 – tomster2300
对于一个数组中的多个元素,它有点周。 –