利用JSON过滤对象和数组中指定的key属性
有时候我们在vue中进行for循环,就会涉及到绑定唯一值key的问题,但是并不是任何时候都会存在所谓的唯一值,使用index下标明显是不合适的,官方也不推荐,除非你for循环出来的列表不用变化。
所以一般常用的做法就是给for循环的对象添加一个属性,属性的值是随机的uuid或者时间戳。
这样前端问题解决了,如果遍历的数据还需要提交到后端,那么不就多了一个属性,这个属性后端不需要的。
所以,我们需要在提交数据前,对数据进行过滤。
过滤又得for循环删除?那怎么行,有没有那种通用的,简单的方法。
过滤方法
/**
* @description: 过滤对象中指定的属性,也可以拿来浅拷贝
* @param {object、array} obj 过滤的对象
* @param {array} keys 过滤的key值
* @Date: 2021-09-09 10:14:09
* @Author: mulingyuer
*/
export function objectFilter(obj, ...keys) {
if (typeof obj !== 'object') return obj; //只有对象才能json化
try {
const jsonData = JSON.stringify(obj, (key, val) => {
if (keys.includes(key)) return void 0;
return val;
});
return JSON.parse(jsonData);
} catch (error) {
console.error(error);
return obj;
}
}
利用JSON的第二个过滤属性,我们可以通过方法的方式,过滤到我们指定的key值,并且数组和键值对对象都是通杀。
如果你想要过滤数组中某个下标,切记,你需要输入中文的下标,如:
const arr = [1,2,3,4];
const brr = objectFilter(arr,"0"); //[2,3,4]
完美达到我的需求,Good
分类:
JavaScript
标签:
jsonjavascript过滤
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据