首頁 > 軟體

js如何刪除物件/陣列中null、undefined、空物件及空陣列範例程式碼

2022-09-20 22:01:43

如下,對於一個多層巢狀的資料結構:例如

要做的就是刪除所有value為空,陣列為空,物件為空的欄位

const querys = {
  name: '測試',
  httpMethod: '',
  httpHeaders: [
    {
      key: 'Accept',
      value: 'test',
    },
  ],
  restParams: [
    {
      key: '',
      value: '',
    },
  ],
  body: {
    bodyType: '',
    formDataList: [
      {
        contentType: '',
        key: '',
        value: '',
      },
    ],
  },
  microtask: {
    bodyType: 'javascript',
    formDataList: [
      {
        key: '2',
        value: '4',
      },
    ],
  },
};

通過處理,希望得到 以下結構:

{
  name: '測試',
  httpHeaders: [
    {
      key: 'Accept',
      value: 'test',
    },
  ],
  microtask: {
    bodyType: 'javascript',
    formDataList: [
      {
        key: '2',
        value: '4',
      },
    ],
  },
}

第一:過濾各種空資料的欄位,比如,string、null、undefined、[]、{}

使用這個方法:(注意呼叫兩遍)

export const delEmptyQueryNodes = (obj = {}) => {
  Object.keys(obj).forEach((key) => {
    let value = obj[key];
    value && typeof value === 'object' && delEmptyQueryNodes(value);
    (value === '' || value === null || value === undefined || value.length === 0 || Object.keys(value).length === 0) && delete obj[key];
  });
  return obj;
};

呼叫方法:

let res = delEmptyQueryNodes(delEmptyQueryNodes(params));

res就是過濾之後你要的資料了

第二:刪除物件中值為空或null或undefined的所有屬性(簡單方法)

1、首先寫一個方法判斷當前值為空

function isEmpty(obj) {
  if (typeof obj === 'undefined' || obj === null || obj === '') return true;
  return false
}

2、刪除物件中值為空的所有屬性

var formData = {
   a: "duo",
   b: 0,
   c: undefined,
   d: null,
   e: null
}
 
function preProcessData(formData) {
  Object.keys(formData).forEach(item=>{
    if(this.isEmpty(formData[item])) {
      delete formData[item];
    }
  })
  return formData;
}

第三:ES6-使用js刪除物件中帶有null和undefined值的資料

把物件中的空值去掉的需求,用於提交表單,但是antd表單通過form.validateFields()方法獲取到的值會存在出現undefined或null的情況,本次分享的方法簡單實用,比較優雅。

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

程式碼:

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

程式碼的原理是通過Object.keys遍歷物件中的key值,通過filter方法篩選出值不為null和undefined的資料。這個方法中最靈魂的地方在於用到了reduce高階函數,reduce返回值的第二個引數傳入{}初始值,通過reduce內部迴圈,將符合條件的陣列中的屬性和屬性值新增到物件中去,最終返回出一個我們想要的不帶空值的物件。 

總結

到此這篇關於js如何刪除物件/陣列中null、undefined、空物件及空陣列的文章就介紹到這了,更多相關js刪除物件陣列中null、undefined、空物件及空陣列內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com