中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中數組排序sort不發生改變的解決方法

發布時間:2020-06-15 13:52:43 來源:億速云 閱讀:1063 作者:鴿子 欄目:web開發

最近在做一個項目,Ajax從后臺返回數據后,前端用js處理時,發現無論如何使用sort排序,最終要么是沒改變,要么只改變最后一次的排序,折騰了很久,最后查了查資料才發現,js中區分淺拷貝和深拷貝。

    var provinceConfirmedCount = data;
    var provinceDeadCount = data;
    var provinceCuredCount = data;

    provinceConfirmedCount.sort(sortBy(("provinceConfirmedCount")));
    provinceDeadCount.sort(sortBy(("provinceDeadCount")));
    provinceCuredCount.sort(sortBy(("provinceCuredCount")));

    console.log(provinceConfirmedCount); //不生效
    console.log(provinceDeadCount); //不生效
    console.log(provinceCuredCount); //生效

//比較數組對象
function sortBy(field) {
    return function(a,b) {
        return parseInt(b[field]) - parseInt(a[field]);
    }
}

淺拷貝、深拷貝與賦值

這三個的區別無法就是改變數據的時候,是如何改變,為了簡單明了,用一張表最快理解:


是否指向同一對象第一層為基本數據類型原數據中包含子對象
賦值會使原數據一同改變會使原數據一同改變
淺拷貝不會使原數據一同改變會使原數據一同改變
深拷貝不會使原數據一同改變不會使原數據一同改變

解決方案

既然知道了原理,這里的需求是需要全部改變,所以我們可以采用JQuery中的extend方法來處理:

    var provinceConfirmedCount = $.extend([], data);
    var provinceDeadCount = $.extend([], data);;
    var provinceCuredCount = $.extend([], data);;

    provinceConfirmedCount.sort(sortBy(("provinceConfirmedCount")));
    provinceDeadCount.sort(sortBy(("provinceDeadCount")));
    provinceCuredCount.sort(sortBy(("provinceCuredCount")));

    console.log(provinceConfirmedCount);
    console.log(provinceDeadCount);
    console.log(provinceCuredCount);

語法:$.extend( target, [object1], [objectN] )其中,target為目標類型,這里我用的是數組[],還可以是{},可根據實際情況處理。 從后面的[object1], [objectN]我們可以知道,extend是可以將多個待處理對象合并成一個目標類型的對象。

以上就是解決JavaScript中數組排序sort不發生改變的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

波密县| 鹤壁市| 松原市| 手游| 谢通门县| 儋州市| 仙居县| 长葛市| 睢宁县| 新巴尔虎右旗| 青神县| 儋州市| 宜兰市| 涟源市| 盈江县| 车险| 扎赉特旗| 封开县| 宜州市| 江孜县| 韩城市| 额敏县| 黎城县| 平谷区| 科技| 会宁县| 青州市| 宁化县| 肥东县| 桐乡市| 无锡市| 松潘县| 郧西县| 大安市| 平山县| 昆明市| 巴林左旗| 正镶白旗| 西乡县| 汉沽区| 霍林郭勒市|