【问题标题】:Match two values in an array匹配数组中的两个值
【发布时间】:2017-07-17 11:30:26
【问题描述】:

我正在尝试用数组中的新对象替换一些现有对象,我有 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 个对象的 storedDay 数组。 allDay 数组将有 10 个对象

【问题讨论】:

  • 存储Day.day是个什么样的值?如果是对象,则无法与===进行比较
  • 向我们展示错误
  • 这些数组的长度是否相同?
  • 该错误是因为 2 个数组的大小不同,有人可以建议我如何检查这两个数组,如果有任何对象被添加到第二个数组,则应该在第一个数组中替换或更新它@丹莫伦

标签: javascript angularjs arrays


【解决方案1】:

您必须定义新变量来存储同一天的值:

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
    })
}

【讨论】:

    【解决方案2】:

    我设法找到了符合我要求的解决方案

    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)
            })
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 2017-07-19
      相关资源
      最近更新 更多