• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 解决JavaScript中数组排序sort不发生改变

解决JavaScript中数组排序sort不发生改变

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了JavaScript数组排序,sort不发生改变等相关知识,希望对您有所帮助

解决JavaScript中数组排序sort不发生改变


最近在做一个项目,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是可以将多个待处理对象合并成一个目标类型的对象。



分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 解决JavaScript中数组排序sort不发生改变

相关文章

  • MySQL密码加密与解密详解
  • laravel-admin怎么使用wang-editor富文本插件
  • 分享一个Laravel建议写法指南
  • 通过实例来了解Laravel中管道的使用方法
  • 小程序怎么查看base64图片
  • 用PhotoShop制作出逼真的电话SIM卡效果教程
  • node.js 基于 STMP 协议和 EWS 协议发送邮件
  • FCKeditor安装FLV视频插件,适用所有CMS
  • DEDE建站内部SEO优化
  • 浅谈bootstrap table分页的实现两种方式

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • Photoshop制作苹果语音助理Siri图标动画教程
    • Photoshop快速制作创意的木块字
    • PS制作质感的立体字
    • JavaScript如何处理并行请求?四种方式浅析
    • nodeJS把json数据转成excel(xlsx文件)输出
    • WordPress移除head头部js、css、feed等多余加载项
    • thinkphp增加每页显示条数的方法
    • vue.js如何实现数字滚动增加效果?代码示例
    • Linux怎么安装ffmpeg-php扩展
    • BootstrapTable如何重新加载数据?3种方式了解一下!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有