本文详细介绍JavaScript中JSON数组的多字段排序实现方法,包括按单个或多个属性值进行升序或降序排列。同时涵盖JSON数组的常用操作,如根据属性值查找对象、删除指定对象、修改对象属性以及向数组添加新元素,所有操作均会直接影响原数组。
JSON数组多字段排序实现
以下是JavaScript中实现JSON数组按多个字段排序的代码示例:
/**数组根据数组对象中的某个属性值进行排序的方法
* 使用例子:newArray.sort(sortByArr(['number'],false)) //表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序
* @param attr 排序的属性 ['name','sex'...],根据一个字段或者多个字段排序
* @param rev true表示升序排列,false降序排序
* */
function sortByArr(arr, rev) {
if (rev == undefined) {
rev = 1;
} else {
rev = (rev) ? 1 : -1;
}
return function(a, b) {
for (var i = 0; i < arr.length; i++) {
let attr = arr[i]
if (a[attr] != b[attr]) {
if (a[attr] > b[attr]) {
return rev * 1;
} else {
return rev * -1;
}
}
}
}
}
补充说明:JavaScript中对JSON数组的常见操作方式
首先,我们定义一个包含多个对象的JSON数组,结构如下:
JSON数组基础定义
var persons = [
{name: "tina", age: 14},
{name: "timo", age: 15},
{name: "lily", age: 16},
{name: "lucy", age: 16}
]
一、根据对象属性值获取对应的对象
根据属性值查找对象
//1. 获取 name 等于 lily 的对象
var lily = persons.filter((p) => {
return p.name == "lily";
});
console.log(lily); //打印结果 [{name: "lily", age: 16}]
//注:filter()方法返回的是一个数组
var twins = persons.filter((p) => {
return p.age == 16;
});
console.log(twins); //打印结果 [{name: "lily", age: 16},{name: "lucy", age: 16}]
二、从数组中删除指定对象
删除指定对象
//删除 name 等于 tina 的对象,利用splice()方法
//1. 首先我们要得到这个对象
var tina = persons.filter((p) => {
return p.name == "tina";
});
//2. 其次得到这个对象在数组中对应的索引
var index = persons.indexOf(tina[0]);
//3. 如果存在则将其删除,index > -1 代表存在
index > -1 && persons.splice(index, 1);
console.log(persons);
//打印结果 [{name: "timo", age: 15}, {name: "lily", age: 16}, {name: "lucy", age: 16}]
三、修改数组中某个对象的属性值
修改对象属性值
//将 name 等于 timo 的 age 修改为 20
//1. 得到 timo 对象
var timo = persons.filter((p) => {
return p.name == "timo";
});
//2. 修改age
timo[0].age = 20;
四、向数组中添加新的对象元素
添加新对象元素
//这个最简单了
persons.push({name: "similar", age: 18});
注意:上述所有操作都会直接修改原始数组,不会返回新数组。
总结
以上内容介绍了JavaScript中JSON数组的多字段排序及常见操作方法,希望能为读者提供帮助。如有疑问欢迎留言,小编会及时回复。感谢大家对本站的支持! 如果本文对您有帮助,欢迎转载,请注明出处,谢谢!