本文转载自:https://www.jb51.net/article/162623.htm
js 根据json数组多个字段排序的实现代码如下所示:
1 /**数组根据数组对象中的某个属性值进行排序的方法 2 * 使用例子:newArray.sort(sortByArr(['number'],false)) //表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序 3 * @param attr 排序的属性 ['name','sex'...],根据一个字段或者多个字段排序 4 * @param rev true表示升序排列,false降序排序 5 * */ 6 7 function sortByArr(arr, rev) { 8 if (rev == undefined) { 9 rev = 1; 10 } else { 11 rev = (rev) ? 1 : -1; 12 } 13 return function(a, b) { 14 for (var i = 0; i < arr.length; i++) { 15 let attr = arr[i] 16 if (a[attr] != b[attr]) { 17 if (a[attr] > b[attr]) { 18 return rev * 1; 19 } else { 20 return rev * -1; 21 } 22 } 23 } 24 } 25 }
PS:Js 中对 Json 数组的常用操作
我们首先定义一个json数组对象如下:
1 var persons = [ 2 {name: "tina", age: 14}, 3 {name: "timo", age: 15}, 4 {name: "lily", age: 16}, 5 {name: "lucy", age: 16} 6 ]
一. 根据对象属性值得到相应对象
1 //1. 获取 name 等于 lily 的对象 2 var lily = persons.filter((p) => { 3 return p.name == "lily"; 4 }); 5 console.log(lily); //打印结果 [{name: "lily", age: 16}] 6 //注:filter()方法返回的是一个数组 7 var twins = persons.filter((p) => { 8 return p.age == 16; 9 }); 10 console.log(twins); //打印结果 [{name: "lily", age: 16},{name: "lucy", age: 16}]
二. 删除其中一个对象
1 //删除 name 等于 tina 的对象,利用splice()方法 2 //1. 首先我们要得到这个对象 3 var tina = persons.filter((p) => { 4 return p.name == "tina"; 5 }); 6 //2. 其次得到这个对象在数组中对应的索引 7 var index = persons.indexOf(tina[0]); 8 //3. 如果存在则将其删除,index > -1 代表存在 9 index > -1 && persons.splice(index, 1); 10 console.log(persons); 11 //打印结果 [{name: "timo", age: 15}, {name: "lily", age: 16}, {name: "lucy", age: 16}]
三. 修改其中一个对象的属性值
1 //将 name 等于 timo 的 age 修改为 20 2 //1. 得到 timo 对象 3 var timo = persons.filter((p) => { 4 return p.name == "timo"; 5 }); 6 //2. 修改age 7 timo[0].age = 20;
四. 往数组中添加一个对象
1 //这个最简单了 2 persons.push({name: "similar", age: 18});
——注: 以上的所有操作都会对原数组产生直接影响。
标签:name,16,age,rev,JS,persons,json,数组 From: https://www.cnblogs.com/zhncnblogs/p/18289298