在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 怎么返回新數(shù)組,不影響原數(shù)組呢

怎么返回新數(shù)組,不影響原數(shù)組呢

**pptlist是最初始的數(shù)組,不能改動(dòng)它.doubt是一次次存入doubtList的,現(xiàn)在的問(wèn)題是我使用judgment方法時(shí),會(huì)改變pptlist,導(dǎo)致計(jì)算number的時(shí)候次數(shù)會(huì)重復(fù)疊加。
**


// redux.js文件:
export default function ppt(state = initialState, action) {
    const data = action.data;
    switch (action.type) {
        case SHOW_SLIDES:
        {
            const pptlist = handling(data.url_s);//處理最初始的圖片數(shù)組,不要改變它
            // pptlist = [
            //     { icon: "1.png", number: 0 },
            //     { icon: "2.png", number: 0 },
            //     { icon: "3png", number: 0 },
            //     { icon: "4.png", number: 0 }
            // ];
            const list = judgment([...pptlist],[...state.doubtList]);

            return {
                ...state,
                pptlist,
                list
            }
        }
        case CHANGE_TIMES:
        {   
            const doubt = data.url; //每接收的一張圖
            const doubtList = state.doubtList.concat(doubt);//我存在了數(shù)組里
            const list = judgment([...state.pptlist],[...doubtList]);
            return {
                ...state,
                doubt,
                doubtList,
                list
            } 
        }
        default:
            return state;
    }
    
}
回答
編輯回答
安淺陌

以我的理解來(lái)說(shuō),會(huì)出現(xiàn)上述問(wèn)題的原因在于judgment函數(shù)直接修改了參數(shù)arr1并且返回,只要先做好備份就可以避免。但是,直接修改參數(shù)是一個(gè)十分不好的行為,可以參考一下airbnb代碼規(guī)范
說(shuō)一些其他的問(wèn)題,盡量少使用for循環(huán),handlings函數(shù)可以不用獨(dú)立出來(lái),用一個(gè)map可以解決。在開發(fā)過(guò)程中,建議可以使用eslint工具來(lái)避免這些問(wèn)題

2017年11月6日 02:44
編輯回答
還吻

你傳參的時(shí)候不是都對(duì)數(shù)組進(jìn)行拷貝了嗎

2018年4月12日 23:36
編輯回答
殘淚

可以用slice返回的就是新數(shù)組。或者es6里面的...

2018年3月25日 05:42
編輯回答
挽歌

將要處理的數(shù)組for遍歷拷貝到一個(gè)新的數(shù)組,對(duì)比 JSON.parse(JSON.stringify(arr))性能好像相差一個(gè)數(shù)量級(jí),如果數(shù)據(jù)不大JSON.parse(JSON.stringify(arr))也是相當(dāng)方便,好吧,這是拷貝性能問(wèn)題
,對(duì)于copy新數(shù)組,newArr=arr.slice()
圖片描述

2017年2月17日 20:40
編輯回答
神經(jīng)質(zhì)

怎么做呢該。

2018年5月19日 04:25
編輯回答
墨小白

用var arr = JSON.parse(JSON.stringify(pptlist));
然后用arr來(lái)進(jìn)行追加

2017年10月9日 13:13
編輯回答
假灑脫

粗暴一點(diǎn)的:

<script>
    var arr = [1,2,3,4];
    
    var newArr = JSON.parse(JSON.stringify(arr));
    newArr[0] = 'a';
    newArr[1] = 'b';
    newArr[2] = 'c';
    newArr[3] = 'd';
    
    console.log(arr);     // 1, 2, 3, 4
    console.log(newArr);  //a, b ,c , d
</script>

如果要完全復(fù)制,可以去看看例如jquery的克隆方法

2017年6月1日 23:18