2017-07-17 110 views
-3

我想用数组中的新对象替换一些现有对象,我有2个数组allDaysstoredDay,两者的大小不同allDays将10个对象和storedDays将有4个对象,但是两者都将具有相同的价值day在数组中匹配两个值

mode(){ 
     this.nativeStorage.getItem("modifiedData").then((data)=>{ 
      console.log(data) 
      var allDay = this.dailyDays; 
      for (var i = 0; i < allDay.length; i++) { 
       var element = allDay[i]; 
       var storedDay = data[i]; 
       console.log("all Day",element.day); 
       console.log("stored Day",storedDay.day); 
      if (element.day === storedDay.day) { 
        console.log("we have same day", i) 
        data=({ 
         day: data.day, 
         month: data.month, 
         year: data.year, 
         quantity: data.selectedQuantity, 
         brand: data.selectedBrand, 
         price: data.price, 
        }) 
        // below line will replace the whole object 
        this.dailyDays[i] = data; 
       } 

      } 
      console.log(data.day) 
     }) 
    } 

上执行我在储值得到错误上面,可能有人给例子,如何检查两个数组,并与storedDay更新数组。

此图片的第一行是存储日期数组,包含4个对象。 而阿迪阵列将有10个对象 enter image description here

+0

什么这种价值存储日期?如果它是一个对象,你不能把它与'===' – Danmoreng

+1

告诉我们错误 –

+0

是这些长度相同的数组? –

回答

3

您必须定义新的变量,用于存储当天值:

mode(){ 
    this.nativeStorage.getItem("modifiedData").then((data)=>{ 
     console.log(data); 
     var sameDay = null; // =======> define this variable 
     var allDay = this.dailyDays; 
     for (var i = 0; i < allDay.length; i++) { 
      var element = allDay[i]; 
      var storedDay = data[i]; 
      console.log("all Day",element.day); 
      console.log("stored Day",storedDay.day); 
     if (element.day === storedDay.day) { 
       console.log("we have same day", i) 
       sameDay=({ // ==========> change this 
        day: data.day, 
        month: data.month, 
        year: data.year, 
        quantity: data.selectedQuantity, 
        brand: data.selectedBrand, 
        price: data.price, 
       }) 
       // below line will replace the whole object 
       this.dailyDays[i] = sameDay; // ======> change this 
      } 

     } 
     if(sameDay) 
      console.log(sameDay.day) // =======> and change this 
    }) 
} 
0

我设法找到解决这一设置为我的要求

mode(){ 
     this.nativeStorage.getItem("modifiedData").then((data)=>{ 
      console.log(data) 
      var sameDay; 
      var allDay = this.dailyDays; 
      for (var i = 0; i < allDay.length; i++) { 
       var allDayelement = allDay[i]; 

       console.log("all Day",allDayelement.day); 

       data.forEach(forEachElement => { 
        console.log("forEachElement",forEachElement.day); 
        if (allDayelement.day === forEachElement.day) { 
        console.log("we have same day", i) 
        sameDay=({ 
         day: forEachElement.day, 
         month: forEachElement.month, 
         year: forEachElement.year, 
         quantity: forEachElement.selectedQuantity, 
         brand: forEachElement.selectedBrand, 
         price: forEachElement.price, 
        }) 
        // below line will replace the whole object 
        this.dailyDays[i] = sameDay; 
      } 
       }); 

      } 
     // console.log(data.day) 
     }) 
    } 
相关问题