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


Posted in Javascript onJune 06, 2019

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数组常用操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
ExtJs扩展之GroupPropertyGrid代码
Mar 05 Javascript
javascript Array对象基础知识小结
Nov 16 Javascript
解决JS浮点数运算出现Bug的方法
Mar 12 Javascript
js弹出确认是否删除对话框
Mar 27 Javascript
javascript 实现 原路返回
Jan 21 Javascript
JavaScript实现删除,移动和复制文件的方法
Aug 05 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
Apr 07 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 Javascript
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
Bootstrap Table 搜索框和查询功能
Nov 30 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
Apr 22 Javascript
JS如何判断对象是否包含某个属性
Aug 29 Javascript
了解在JavaScript中将值转换为字符串的5种方法
Jun 06 #Javascript
Vue项目总结之webpack常规打包优化方案
Jun 06 #Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
Jun 06 #Javascript
详解vue-cli@2.x项目迁移日志
Jun 06 #Javascript
详解新手使用vue-router传参时注意事项
Jun 06 #Javascript
vue-cli配置全局sass、less变量的方法
Jun 06 #Javascript
解决vue组件props传值对象获取不到的问题
Jun 06 #Javascript
You might like
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
2015/10/19 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
JavaScript获取URL参数的方法之一
2017/03/24 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
vue+moment实现倒计时效果
2019/08/26 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
浅谈Python处理PDF的方法
2017/11/10 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
Django model序列化为json的方法示例
2018/10/16 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
python创建文本文件的简单方法
2020/08/30 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
小学运动会表扬稿
2014/01/19 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
赡养老人协议书范本
2015/08/06 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python