如何在节点中更新或删除结果数组

时间:2018-12-23 06:40:43

标签: node.js express

我感到困惑,如何完成此任务,让我先展示代码然后发布

案例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插入数据库 并像解决一样返回承诺被拒绝的人可以告诉我什么是最好的方法。

1 个答案:

答案 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)
  });
 }
}

快乐编码:)