最近在做一個項目,Ajax從后臺返回數(shù)據(jù)后,前端用js處理時,發(fā)現(xiàn)無論如何使用sort排序,最終要么是沒改變,要么只改變最后一次的排序,折騰了很久,最后查了查資料才發(fā)現(xiàn),js中區(qū)分淺拷貝和深拷貝。
網(wǎng)站設(shè)計制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺管理系統(tǒng);成都做網(wǎng)站、成都網(wǎng)站設(shè)計收費合理;免費進行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運營了10余年的創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司。
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); //生效 //比較數(shù)組對象 function sortBy(field) { return function(a,b) { return parseInt(b[field]) - parseInt(a[field]); } }
淺拷貝、深拷貝與賦值
這三個的區(qū)別無法就是改變數(shù)據(jù)的時候,是如何改變,為了簡單明了,用一張表最快理解:
是否指向同一對象 | 第一層為基本數(shù)據(jù)類型 | 原數(shù)據(jù)中包含子對象 | |
賦值 | 是 | 會使原數(shù)據(jù)一同改變 | 會使原數(shù)據(jù)一同改變 |
淺拷貝 | 否 | 不會使原數(shù)據(jù)一同改變 | 會使原數(shù)據(jù)一同改變 |
深拷貝 | 是 | 不會使原數(shù)據(jù)一同改變 | 不會使原數(shù)據(jù)一同改變 |
解決方案
既然知道了原理,這里的需求是需要全部改變,所以我們可以采用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為目標類型,這里我用的是數(shù)組[],還可以是{},可根據(jù)實際情況處理。 從后面的[object1], [objectN]我們可以知道,extend是可以將多個待處理對象合并成一個目標類型的對象。
以上就是解決JavaScript中數(shù)組排序sort不發(fā)生改變的詳細內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!
本文題目:JavaScript中數(shù)組排序sort不發(fā)生改變的解決方法
文章位置:http://chinadenli.net/article6/pigcig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、微信公眾號、靜態(tài)網(wǎng)站、、外貿(mào)網(wǎng)站建設(shè)、標簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)