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
對於一個數組中的多個元素,它有點周。 –