与下一个数组或对象相比,仅更改数组或对象的已更改属性

时间:2019-05-12 17:26:03

标签: javascript arrays object reactive-programming

我有两个数组 a b ,数组 a 是反应性数组,其中包含反应性对象,我的数组与UI绑定(例如,当我更新数组的任何对象或更改数组中对象的任何属性时,即简单地循环遍历

  • 元素并显示数据),然后视图层将自动更新。现在,我正在尝试创建一个函数,该函数可以接收我的两个数组,并且仅更新数组 a 的更新或更改的属性,而不接触数组的未更新数据或数组 a <中的对象的未更新的属性/ strong>查看数组 b

    我没有使用任何JavaScript自由或框架。在深度克隆数组 b 并将克隆的数组放入变量 a 时遇到问题,我尝试了克隆,但问题没有解决。请帮我。

    
    var a = [
       {name:'mina' , age:18 , subject:'computer'}, //
       {name:'japan'}
    ];
    
    var b = [
      {name:'mina pandey' , age:19 , subject:'computer'},
      {name:'okkk' , aws:false}
    ]
    
    function LogicalUpdator(updating , newData) {     
       newData.forEach((el , index) => {
          if(typeof el == 'object'){
             var keys = Object.keys(el);
             keys.forEach(function(a){
               if(updating[index][a] !== el[a]){
                 updating[index][a] = el[a];
               }
             })
          }else if(Array.isArray(el)){
             el.forEach(function(a){
               if(updating[index] !== el[a]){
                 updating[index] = el[a];
               }
             })
          }else if(typeof el == 'string'){
    
          }
       });
    }
    
    BestUpdate(a , b);
    

    我写了十次以上,但我解决不了。我尽力了,请帮助我。

    根据代码的详细问题:-

    从数组a [0] name应该转换为mina pandey并看着b[0].name,同样,a[0].age应该转换为19并考虑数组 b b[0].age,但不应更改a[0].subject(即computer,因为a[0].subject == b[0].subject(类似a[1].name(即japan)应更改为b[1].nameokkk和新属性aws应该添加到a[1]中,因为b[1]具有新属性aws,它们在a处的外观类似当在数组 b 上添加了新数据(i.e object, array, number, boolen , string)时,应将相同的数据添加到数组 a ,在删除数组的情况下,相同的数据应删除。 b ,则也应从数组 a 中删除相同的数据。

    请不要问我为什么不直接更新数组 a (反应性数组),有一些与我的项目相关的深层,真实的原因,其中包含这个小问题。抱歉,我无法解释我的项目在堆栈溢出或任何公共站点上的情况。

    请帮助我,我很难解决这个问题,因为我只是一个学习者,我不具备处理此类复杂问题的丰富知识。

  • 0 个答案:

    没有答案