JS根据json数组多个字段排序及json数组常用操作

js 根据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;

}

}

}

}

}

PS:Js 中对 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});

 ——注: 以上的所有操作都会对原数组产生直接影响。

总结

以上所述是小编给大家介绍的JS根据json数组多个字段排序及json数组常用操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

以上是 JS根据json数组多个字段排序及json数组常用操作 的全部内容, 来源链接: utcz.com/z/336327.html

回到顶部