JS中对象按属性排序(冒泡排序)
排序方法一、
在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据json中某一项进行数组的排序。
例如返回的数据结构大概是这样:
{
result:[
{id:,name:'中国银行'},
{id:,name:'北京银行'},
{id:,name:'河北银行'},
{id:,name:'保定银行'},
{id:,name:'涞水银行'}
]
}
现在我们根据业务需要,要根据id的大小进行排序,按照id小的json到id大的json顺序重新排列数组的顺序
在js中添加排序的方法:
这里使用JavaScript sort() 方法,首先解释下这个sort的方法
语法:arrayObject.sort(sortby) sortby:可选,规定排序顺序。必须是函数。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
下面开始使用sort(sortby) 来进行这个排序,并打印到控制台:
function sortId(a,b){
return a.id-b.id
}
result.sort(sortId);
console.log(result);
然后查看控制台,排序成功:

如果对比的对象有相同的属性 则添加id属性到新对象上。
arraySort(){
function com(oldV,newV){
for(var i=;i<newV.length;i++){
if(newV.nav_name == oldV.nav_name){
newV[i].id = oldV[i].id
}
}
}
function sortId(a,b){
return a.id-b.id
}
console.log(this.urlList);
console.log('○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○');
com(this.compare,this.urlList)
this.urlList.sort(sortId);
this.happyList = this.urlList
}
需求: 每一个添加的路由按顺序排列。 最终解决办法: 冒泡排序

threeList:["实时状况","基础数据","GPU实时统计","主机扫描","设备列表","主机列表","模板列表","存储空间列表","价格列表","服务列表","工单列表","创建工单","AI源码列表","发票管理","收入管理","支持管理","系统赠送","用户列表","微信用户列表","推广申请","提现申请","推广信息列表","折扣列表","活动列表","公告列表","角色列表","权限列表","角色管理",
"GPU租用总量总计","GPU利用率统计","GPU使用分时统计","租用量分析","租凭费分析","用户增长统计","用户注册时间分布","用户活跃量统计","用户属性统计","用户排行榜","网站访问统计","省份人数分布","城市人数分布","学校人数分布","用户 GPU 利用率排行榜","使用时长统计","消费类型统计","服务市场购买统计","消费券使用记录","AI源码用户购买列表","用户充值额统计","用户充值渠道统计","收支对比","收入统计","支出统计"]
给数据添加序号,不用一个一个的添加 这里使用 array.indexOf
x.ind =this.threeList.indexOf(this.removeAllSpace(x.nav_name))
//(双重for循环 第一个for控制轮数 第二个for控制次数 比较的轮数为数据个数-1 一轮比较的次数为数据个数-1 总个数为比较轮数*1轮比较次数)
for(var i=; i<=this.urlList.length-;i++ ){
for(var j=i+; j<=this.urlList.length-;j++){
if(this.urlList[j].ind <this.urlList[i].ind){
var num =this.urlList[j];
this.urlList[j] = this.urlList[i]
this.urlList[i] = num
}
}
}
(固定写法)
排序方法二、
var newArray = [{
name: "aaa",
value: 0
},
{
name: "ddd",
value: 3
},
{
name: "bbb",
value: 1
},
{
name: "eee",
value: 4
},
{
name: "ccc",
value: 2
}];
function compare(property) {
return function (a, b) {
var value1 = a[property];
var value2 = b[property];
return value1 - value2;
}
}
console.log(newArray.sort(compare("value")))
JS中对象按属性排序(冒泡排序)的更多相关文章
- java 对list中对象按属性排序
实体对象类 --略 排序类----实现Comparator接口,重写compare方法 package com.tang.list; import java.util.Comparator; publ ...
- js中对象的自定义排序
//并返回一个可以用来对包含该成员的对象数组进行排序的比较函数 var compareAsc = function (prop) { return function (obj1, obj2) { va ...
- js中 对象名.属性名和对象名['属性名']的区别,.和[]的区别
对象中的对象名[ ' 属性名 ' ] 和 对象名.属性名的区别 话不多少,上图分析,菜鸟刚学几个月,如有错误,欢迎大佬们指出 这里是很显而易见的! 然后我们用for in 对他进行遍历,他的区别就出来 ...
- js中对象的属性名和属性值
代码 /** * 对象的属性名 * - 对象的属性名不强制遵循标识符的命名规范,可以是任意的名字,但在开发中 * 尽量遵循标识符的命名规范 */ // 创建对象obj1 var obj1 = new ...
- Js数组对象的属性值升序排序,并指定数组中的某个对象移动到数组的最前面
需求整理: 本篇文章主要实现的是将一个数组的中对象的属性值通过升序的方式排序,然后能够让程序可以指定对应的数组对象移动到程序的最前面. 数组如下所示: var arrayData= [{name: & ...
- array排序(按数组中对象的属性进行排序)
使用array.sort()对数组中对象的属性进行排序 <template> <div> <a @click="sortArray()">降序& ...
- JS 取Json数据中对象特定属性值
解析JSON JSON 数据 var str = '[{"a": "1","b": "2"}, {"a&quo ...
- js中对象使用
简单记录javascript中对象的使用 一.创建对象 //创建一个空对象 var o={}; //创建一个含有两个属性的对象,x.y var o2={x:12,y:'12',name:'JS'}; ...
- Vue 改变数组中对象的属性不重新渲染View的解决方案
Vue 改变数组中对象的属性不重新渲染View的解决方案 在解决问题之前,我们先来了解下 vue响应性原理: Vue最显著的一个功能是响应系统-- 模型只是一个普通对象,修改对象则会更新视图.受到ja ...
随机推荐
- day10-函数基础知识
函数 什么是函数 把工具事先准备好,然后下次使用的时候,直接使用就行了.我们的函数就是工具 为何用函数 1.遇到重复的功能只能重复编写实现代码,代码冗余 2.功能需要扩展时,需要找出所有实现该功能的地 ...
- tidyverse生态链
一套完整的数据分析流程 , 如下图所示 从图中可以看到,整个流程包括读取数据,整洁数据,数据探索和交流部分.经过前两部分, 我们可以得到一个整理好的数据,它的每一行都是一个样本 , 每一列是一个变量. ...
- 利用shell脚本去备份幸运28源码搭建下载所指定的数据库
#! /bin/bash幸运28源码搭建下载Q[115288oo99]logintool=/home/yx/server/mysql/mysql/bin/mysqldumptool=/home/yx/ ...
- 57 和为S的数字
题目一:和为S的两个数字 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小 ...
- Google Cloud SSH 连接配置
设置当前用户及root用户的密码 sudo passwd xx-user # 输入新密码 sudo passwd root # 输入新密码(建议保持一样) 在本地生成私钥和公钥 cd ~/.ssh s ...
- python 易忘操作整理
>>> l=[1,2,3,4,5] >>> s='$'.join(str(i) for i in l) >>> print(s,end=" ...
- mysql-索引、导入、导出、备份、恢复
1.索引 索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容. 当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进行 ...
- 【POJ 1981】Circle and Points(已知圆上两点求圆心坐标)
[题目链接]:http://poj.org/problem?id=1981 [题意] 给你n个点(n<=300); 然后给你一个半径R: 让你在平面上找一个半径为R的圆; 这里R=1 使得这个圆 ...
- ACdream 1032 Component
Component Time Limit: 5000ms Memory Limit: 64000KB This problem will be judged on ACdream. Original ...
- CDOJ 889 Battle for Silver
Battle for Silver Time Limit: 2999/999MS (Java/Others) Memory Limit: 65432/65432KB (Java/Others) ...