有时候我们在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过滤

评论

暂无评论数据

暂无评论数据

目录