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 相关文章推荐
document.getElementById介绍
Sep 13 Javascript
JavaScript实现页面实时显示当前时间的简单实例
Jul 20 Javascript
iframe的父子窗口之间的对象相互调用基本用法
Sep 03 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
Jul 02 Javascript
node.js中的fs.writeFileSync方法使用说明
Dec 14 Javascript
简单谈谈javascript代码复用模式
Jan 28 Javascript
JS创建对象几种不同方法详解
Mar 01 Javascript
BootStrap glyphicons 字体图标实现方法
May 01 Javascript
javascript判断图片是否加载完成的方法推荐
May 13 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
layer.js open 隐藏滚动条的例子
Sep 05 Javascript
微信小程序实现蒙版弹出窗功能
Sep 17 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中使用Oracle数据库(2)
2006/10/09 PHP
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
PHP和C#可共用的可逆加密算法详解
2015/10/26 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
javascript生成大小写字母
2015/07/03 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
Python处理Excel文件实例代码
2017/06/20 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python异常处理和日志处理方式
2019/12/24 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
专科毕业生求职简历的自我评价
2013/10/12 职场文书
前台文员职责范本
2014/03/07 职场文书
求职意向书范文
2014/04/01 职场文书
如何写好自荐信
2014/04/07 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
创业计划书之餐饮
2019/09/02 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
Python 中的 copy()和deepcopy()
2021/11/07 Python
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫
MySQL分布式恢复进阶
2022/07/23 MySQL