定制设计js删除对象/数组中null、undefined、空对象及空数组方法示例

如下,定制设计对于一个多层嵌套的数据结构:例如

定制设计要做的就是删除所有value为空,数组为空,定制设计对象为空的字段

  1. const querys = {
  2. name: '测试',
  3. httpMethod: '',
  4. httpHeaders: [
  5. {
  6. key: 'Accept',
  7. value: 'test',
  8. },
  9. ],
  10. restParams: [
  11. {
  12. key: '',
  13. value: '',
  14. },
  15. ],
  16. body: {
  17. bodyType: '',
  18. formDataList: [
  19. {
  20. contentType: '',
  21. key: '',
  22. value: '',
  23. },
  24. ],
  25. },
  26. microtask: {
  27. bodyType: 'javascript',
  28. formDataList: [
  29. {
  30. key: '2',
  31. value: '4',
  32. },
  33. ],
  34. },
  35. };

通过处理,希望得到 以下结构:

  1. {
  2. name: '测试',
  3. httpHeaders: [
  4. {
  5. key: 'Accept',
  6. value: 'test',
  7. },
  8. ],
  9. microtask: {
  10. bodyType: 'javascript',
  11. formDataList: [
  12. {
  13. key: '2',
  14. value: '4',
  15. },
  16. ],
  17. },
  18. }

第一:定制设计过滤各种空数据的字段,比如,string、null、undefined、[]、{}

定制设计使用这个方法:(定制设计注意调用两遍)

  1. export const delEmptyQueryNodes = (obj = {}) => {
  2. Object.keys(obj).forEach((key) => {
  3. let value = obj[key];
  4. value && typeof value === 'object' && delEmptyQueryNodes(value);
  5. (value === '' || value === null || value === undefined || value.length === 0 || Object.keys(value).length === 0) && delete obj[key];
  6. });
  7. return obj;
  8. };

调用方法:

let res = delEmptyQueryNodes(delEmptyQueryNodes(params));

res就是过滤之后你要的数据了

第二:删除对象中值为空或null或undefined的所有属性(简单方法)

1、首先写一个方法判断当前值为空

  1. function isEmpty(obj) {
  2. if (typeof obj === 'undefined' || obj === null || obj === '') return true;
  3. return false
  4. }

2、删除对象中值为空的所有属性

  1. var formData = {
  2. a: "duo",
  3. b: 0,
  4. c: undefined,
  5. d: null,
  6. e: null
  7. }
  8. function preProcessData(formData) {
  9. Object.keys(formData).forEach(item=>{
  10. if(this.isEmpty(formData[item])) {
  11. delete formData[item];
  12. }
  13. })
  14. return formData;
  15. }

第三:ES6-使用js删除对象中带有null和undefined值的数据

把对象中的空值去掉的需求,用于提交表单,但是表单通过form.validateFields()方法获取到的值会存在出现undefined或null的情况,本次分享的方法简单实用,比较优雅。

    ------->>>>>>    

 

代码:

  1. const params = Object.keys(data)
  2. .filter((key) => data[key] !== null && data[key] !== undefined)
  3. .reduce((acc, key) => ({ ...acc, [key]: data[key] }), {});

代码的原理是通过Object.keys中的key值,通过filter方法筛选出值不为null和undefined的数据。这个方法中最灵魂的地方在于用到了reduce高阶函数,reduce返回值的第二个参数传入{}初始值,通过reduce内部循环,将符合条件的数组中的属性和属性值添加到对象中去,最终返回出一个我们想要的不带空值的对象。 

交流


1、QQ群:可添加qq群共同进阶学习: 进军全栈工程师疑难解  群号:   856402057

2、公众号:公众号「进军全栈攻城狮」 ,对前端技术保持学习爱好者。我会经常分享自己所学所看的干货,在进阶的路上,共勉!通过公众号可加我vx拉群

 

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发