对象数组排序,数组对象根据 某个字段进行排序
对象数组排序,数组对象根据 某个字段进行排序详细介绍
本文目录一览: 数组对象根据 某个字段进行排序
// var obj = [{ name: 'aa', age: 18 }, { name: 'bb', age: 25 }, { name: 'cc', age: 10 }]
? ? // // // 根据年龄排序
? ? // // // 解:升序:
? ? // console.log("解:升序:", obj.sort(Fun))//0: {name: "cc", age: 10}1: {name: "aa", age: 18}2: {name: "bb", age: 25}
? ? // // 降序:
? ? // // function Fun(a, b) {
? ? // // ? ? return b.age - a.age
? ? // // }
? ? // console.log("降序:", obj.sort(Fun))//0: {name: "bb", age: 25}1: {name: "aa", age: 18}2: {name: "cc", age: 10}
数组排序是什么
JavaScript实现多维数组、对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序。
sort()方法用于对数组的元素进行排序。语法如下:arrayObject.sort(sortbyfun),返回值为对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
常见的排序算法
1、冒泡排序
最简单的一种排序算法。假设长度为n的数组arr,要按照从小到大排序。
2、选择排序
选择排序的基本思想描述为:每一趟在n-i+1(i=1,2,...,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。
3、插入排序
插入排序的基本思想就是将无序序列插入到有序序列中。
4、快速排序
快速排序的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,已达到整个序列有序。
javascript如何使用sort()方法实现多维数组、对象数组排序代码详解
sort() 方法用于对数组的元素进行排序。语法如下:arrayObject.sort(sortby)返回值为对数组的引用。请注意,数组在原数组上进行排序,不生成副本。如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。若 a 等于 b,则返回 0。若 a 大于 b,则返回一个大于 0 的值。sort(fun)接受了个排序规则函数,这个函数将比较2个数字的大小。而我们的对象数组排序,实际上原理也是一样的。如果不比较数字的大小,则可以这样:数组直接调用sort()后,数组按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。对于对象数组排序,我们先写一个构造比较函数的函数:要排序的数组:直接调用函数:到这里,对象数组排序就算基本实现了。那如何实现多个键值排序呢?意思就是先是对age排序,如果age相同,再比较name。这时,我们可以进一步修改by函数,让其可以接受第二个参数,当主要的键值产生一个匹配的时候,另一个compare方法将被调用以决出高下。好了,现在可以放心使用了。如果看不懂,可直接copy 这个by函数到你的应用里面,直接调用即可。
按对象数据排序数组问题,怎么解决
首先,我们看一下JavaScript的sort()方法,这个方法其实是可以带参数的:当sort()方法不带参数的时候,将按照数字,字母(字符编码)的顺序进行排序。
当sort()想要按照其他标准进行排序的时候,就需要传入参数。这个参数是一个比较函数。
注意:这里的比较函数应该具有两个参数a和b。其返回值如下:若a小于b,在排序后的数组中a应该出现在b之前(即升序排列),则返回小于0的值
若a等于b,则返回0
若a大于b,则返回一个大于0的
这样说比较绕,简单来理解就是: 比较函数要来比较a和b的大小,此时比较结果的3种情况要返回不同的值:
当a小于b的时候,返回负数则升序排列;返回正数则降序排列
a大于b的时候返回值与其相反
a等于b的时候,返回0
js对象数组按照另一个数组排序
场景
下拉列表有4个选项
用户按照先后排序后保存
[2, 4, 1, 3]
保存完后,按照顺序进行排序
思路,两个数组,排序有点困难
如果变成一个数组排序,就方便了
我们给每个option新增一个排序属性sordId
这个sordId的值就是 option的id在 showArr中的索引位置
现在我们的options数组已经可以排序了
再写一个对象数组按照属性名排序的方法
最后输出
如何以数组中对象的某个字段为基准重新排列数组的内容
数组排序,你可以直接调用javascript原生自带的sort()方法,比如下面的例子:// Array.prototype.sort() //原生自带的数组的排序方法; var fruit = ['apples', 'bananas', 'Cherries']; //定义一个数组fruit.sort(); // ['Cherries', 'apples', 'bananas']; //按字母排序的结果 var scores = [1, 2, 10, 21]; //定义一个数字排序,你发现其实还是按照字母序排列的scores.sort(); // [1, 10, 2, 21] 如果希望按照期望的数字排序。scores.sort(function(a,b){return a-b}); //这样的就可以了。结果为:21 10 2 1 var things = ['word', 'Word', '1 Word', '2 Words'];things.sort(); // ['1 Word', '2 Words', 'Word', 'word']// In Unicode, numbers come before upper case letters,// which come before lower case letters.
JavaScript如何对数组以及对象进行排序的实例
这篇文章主要介绍了javascript 数组排序与对象排序的实例的相关资料,需要的朋友可以参考下javascript 数组排序与对象排序的实例数组排序在使用JavaScript的时候,我们都发现了sort这个函数其实是按照字典顺序进行排序的,比如下面的这个例子:控制台输出结果:这个也很显然验证了我之前所写的东西,上面的结果就是比较数组元素的第一位,然后按照这个1-9这个顺序排列,那么我们就需要给sort函数传入一个比较函数(在这里我还是得提及一下C语言的函数指针,简单说就是给一个函数传入另外一个函数,而这个传入的就像是你给出你自己的一套规则,而计算机按你这个规则执行就好了),现在也是这个道理,给出一个规则来,那就请看下面的代码:降序输出:传入的函数是采用ES6的写法,等同于:输出结果:对象排序今天要说的排序对象,像下面那样,将多个对象放置在一个数组里面下面就需要对它们进行排序了:控制台输出结果:
js使用Array.prototype.sort()对数组对象排序的方法
本文实例讲述了js使用Array.prototype.sort()对数组对象排序的方法。分享给大家供大家参考。具体分析如下:
在讲对数组对象进行排序时,我们先来简单的了解一下Array.prototype.sort()。sort方法接受一个参数——Function,function会提供两个参数,分别是两个进行比较的元素,如果元素是String类型则通过Unicode
code进行比较,如果是Number类型则比较值的大小。如果比较的函数中返回1则两个元素交换位置,0和-1不交换位置。先看一个例子:
复制代码
代码如下:var
arr
=
[3,
5,
2,
1];
//
从小到大排序
arr.sort(function
(a,
b)
{
return
a
>
b
?
1
:
-1;
});
//
得到的结果:[1,
2,
3,
5]
那么回到我们的主题,如果是对一个数组对象进行排序,该怎么写呢?其实原理和上面一样,如:
复制代码
代码如下:var
arr
=
[
{
a
:
2,
b
:
3.2},
{
a
:
3,
b
:
1.2},
{
a
:
4,
b
:
2.2},
{
a
:
6,
b
:
1.2},
{
a
:
5,
b
:
3.2}
]
///
从小到大按属性b排序
arr.sort(function(x,
y){
return
x.b
>
y.b
?
1:-1;
});
x和y就是arr的一个元素,即一个对象,所以直接比较两个对象的属性即可。
上面的例子中,最小的元素中有重复,如果需求是:先按b属性从小到大排序,如果最小中有重复则再按a属性排序,那应该怎么写呢?
在排序的时候,先按b属性排序,如果x.b的大于y.b则将x移到y的右边,如果x.b等于y.b则再通过x.a和y.a进行比较,所以代码如下:
复制代码
代码如下:arr.sort(function
(x,
y)
{
if
(x.b
>
y.b)
{
return
1;
}
else
if
(x.b
===
y.b)
{
return
x.a
>
y.a
?
1
:
-1;
}
else
if
(x.b
<
y.b)
{
return
-1;
}
})
希望本文所述对大家的javascript程序设计有所帮助。
js对象数组的排序
var arr = [ ["张", "1:00", "广州"], ["小张", "4: 00", "广州"], ["王", "7: 00", "北京"], ["李", "2: 00", "上海"], ["小李", "3: 00", "上海"], ["赵", "5: 00", "深圳"]];var tmp = "广州,上海,深圳,北京";arr.sort(function(a, b) { var da = new Date("1111/1/1," + a[1].replace(/^\s*|\s*$/g, '') + ":0"); var db = new Date("1111/1/1," + b[1].replace(/^\s*|\s*$/g, '') + ":0"); var pa = tmp.indexOf(a[2]), pb = tmp.indexOf(b[2]); if (pa > pb) { return 1; } else if (pa < pb) { return -1; } else { if (da > db) { return 1; } else if (da < db) { return -1; } else { return 0; } }});console.log(arr);