json数组排序,深拷贝,浅拷贝,删除,增加,筛选,

mac2025-02-15  9

json数组排序,深拷贝,浅拷贝,删除,增加

一 根据json里面的某个数值排序,倒叙或者顺序

sort会改变原数组,因为这个差点和后端打起来了!!! 后来发现,是sort惹的祸, 至于我是怎么踩得坑,就不写了, 下面是真确的方法,记住就好了;

需求;
一 添加新的用户时,接口返回数据,会将它添加在数组的第一个;
二 前端显示数组,要按照年龄的大小显示

注:至于为什么不让后端排序好,因为我需要当前数组第一个数据 一般后台给的数据是这样的

var res.info=[ {naem:'莫西子诗',ages:38}, {naem:'百里登风',ages:32}, {naem:'刺客伍六一',ages:27} ] //var arr = res.info; // 浅拷贝 var arr = [...res.info]; // 深拷贝 arr.sort((a, b) => { return b.bargain_price - a.bargain_price }) console.log(res.info) console.log(arr)
浅拷贝和深拷贝的区别是,一个改变原数组,一个不改变;

** 1.浅拷贝是指, 修改B对象的属性和方法会影响到A对象的属性和方法, 我们称之为浅拷贝 **

var arr = res.info; // 这样写的话,不管你将arr数组处理成啥样的, 打印 arr 和 res,info 是一样的 即 console.log(res.info) 和 *console.log(arr)* 是一样的, // 本质上是res.info和arr都指向了同一块存储空间 // 所以无论是修改res.info还是arr都会影响到另外一个

** 深拷贝是指, 修改B对象的属性和方法不会影响到A对象的属性和方法, 我们称之为深拷贝 **

var arr = [...res.info]; 这样 console.log(res.info) 和 *console.log(arr)* 在接下来你修改他们其中一个,另一个的数据都不会跟着发生改变

从富文本 里面获取所有图片地址的方法

原来是这样的

// res.data.info.description <p><p><p><img src="https://wxiong.cn/cofc.png"/></p><p><img src="https://wxixiong.cn/6aba1b.png"/></p></p></p>

处理方法

var str = res.data.info.description; var imUrl = str.match(/src="([^"]*)/g).map(s => s.substring(5)); console.log(imgUrl)

打印出来是这样的

["https://wxiong.cn/cofc.png", "https://wxixiong.cn/6aba1b.png"]

筛选出你想要的的字段 filter()

在一个json数组里面筛选type是banner的相应数组

let dataInfo = res.data.info.all_data; let banner = dataInfo.filter((e) => { if(e.type == 'banner'){return e } }) that.setData({ banner:banner[0].list, advert:advert })

删除一些字段

let dataInfo = res.data.info.all_data; let banner = dataInfo.filter((e) => { if(e.type != 'banner'){return e } }) // 删除type:banner的数组 that.setData({ banner:banner[0].list, advert:advert })
最新回复(0)