我感到困惑,如何完成此任务,让我先展示代码然后发布
案例1
let arr1=[1,3]
let arr2=[1,2,3]
如果arr2较大,则比较这2个数组,然后从数据库中删除2个
案例2
let arr1=[1,2,3]
let arr2=[1,2]
如果arr1较大则比较这2个数组,然后将3插入数据库 并像解决一样返回承诺被拒绝的人可以告诉我什么是最好的方法。
答案 0 :(得分:1)
解决问题的方法
第1步:找到两个数组的差,让我们说arr1&arr2
步骤2:检查arr2.length是否大于从数据库中删除的差异
第3步:如果arr1.length大于db中的插入差异
对于步骤1,实现以下“差异”功能:
Array.prototype.difference = function(arr) {
return this.filter(function(i) {return arr.indexOf(i) === -1;});
};
[1,2,3,4,5,6].diff( [3,4,5] );// return [1,2,6]
// here you capture the difference among arrays
let diffArray = arr1.difference(arr2);
对于步骤2和步骤3:
if(arr2.length > arr1.length){
diffArray.forEach((element)=>{
// your db deletion code comes here something like.....db.delete(element);
return new Promise((resolve, reject) => {
// db deletion code
// return resolve(result)....if successfully inserted
// reject(err).........if some error occurs
})
.then(result => result)
.catch(err => err)
});
// similarly
if (arr1.length >arr2.length){
diffArray.forEach((element)=>{
// your db insertion code comes here
return new Promise((resolve, reject) => {
// db insertion code
// return resolve(result)....if successfully inserted
// reject(err).........if some error occurs
})
.then(result => result)
.catch(err => err)
});
}
}
快乐编码:)