亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

古交市| 佛学| 高清| 卓资县| 含山县| 广州市| 安阳市| 敖汉旗| 刚察县| 平江县| 常州市| 扎囊县| 光山县| 谢通门县| 普宁市| 法库县| 那坡县| 土默特右旗| 聂荣县| 寿阳县| 南阳市| 通州区| 确山县| 三都| 社会| 如东县| 泰来县| 神农架林区| 黄梅县| 卢龙县| 郁南县| 东至县| 都兰县| 平阳县| 英超| 常州市| 江山市| 镇安县| 仁寿县| 山东| 锦州市|