js如何刪除對(duì)象/數(shù)組中null、undefined、空對(duì)象及空數(shù)組實(shí)例代碼
如下,對(duì)于一個(gè)多層嵌套的數(shù)據(jù)結(jié)構(gòu):例如
要做的就是刪除所有value為空,數(shù)組為空,對(duì)象為空的字段
const querys = {
name: '測(cè)試',
httpMethod: '',
httpHeaders: [
{
key: 'Accept',
value: 'test',
},
],
restParams: [
{
key: '',
value: '',
},
],
body: {
bodyType: '',
formDataList: [
{
contentType: '',
key: '',
value: '',
},
],
},
microtask: {
bodyType: 'javascript',
formDataList: [
{
key: '2',
value: '4',
},
],
},
};通過處理,希望得到 以下結(jié)構(gòu):

{
name: '測(cè)試',
httpHeaders: [
{
key: 'Accept',
value: 'test',
},
],
microtask: {
bodyType: 'javascript',
formDataList: [
{
key: '2',
value: '4',
},
],
},
}第一:過濾各種空數(shù)據(jù)的字段,比如,string、null、undefined、[]、{}
使用這個(gè)方法:(注意調(diào)用兩遍)
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;
};調(diào)用方法:
let res = delEmptyQueryNodes(delEmptyQueryNodes(params));
res就是過濾之后你要的數(shù)據(jù)了
第二:刪除對(duì)象中值為空或null或undefined的所有屬性(簡單方法)
1、首先寫一個(gè)方法判斷當(dāng)前值為空
function isEmpty(obj) {
if (typeof obj === 'undefined' || obj === null || obj === '') return true;
return false
}2、刪除對(duì)象中值為空的所有屬性
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刪除對(duì)象中帶有null和undefined值的數(shù)據(jù)
把對(duì)象中的空值去掉的需求,用于提交表單,但是antd表單通過form.validateFields()方法獲取到的值會(huì)存在出現(xiàn)undefined或null的情況,本次分享的方法簡單實(shí)用,比較優(yōu)雅。
------->>>>>> 
代碼:
const params = Object.keys(data)
.filter((key) => data[key] !== null && data[key] !== undefined)
.reduce((acc, key) => ({ ...acc, [key]: data[key] }), {});代碼的原理是通過Object.keys遍歷對(duì)象中的key值,通過filter方法篩選出值不為null和undefined的數(shù)據(jù)。這個(gè)方法中最靈魂的地方在于用到了reduce高階函數(shù),reduce返回值的第二個(gè)參數(shù)傳入{}初始值,通過reduce內(nèi)部循環(huán),將符合條件的數(shù)組中的屬性和屬性值添加到對(duì)象中去,最終返回出一個(gè)我們想要的不帶空值的對(duì)象。
總結(jié)
到此這篇關(guān)于js如何刪除對(duì)象/數(shù)組中null、undefined、空對(duì)象及空數(shù)組的文章就介紹到這了,更多相關(guān)js刪除對(duì)象數(shù)組中null、undefined、空對(duì)象及空數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JavaScript判斷空值、NULL、undefined的方法對(duì)比
- JavaScript中的null和undefined用法解析
- js刪除對(duì)象/數(shù)組中null、undefined、空對(duì)象及空數(shù)組方法示例
- JavaScript中undefined和null的區(qū)別
- JavaScript基本類型值-Undefined、Null、Boolean
- 有關(guān)JS中的0,null,undefined,[],{},'''''''''''''''',false之間的關(guān)系
- 兩個(gè)JavaScript中的特殊值null和undefined詳解
相關(guān)文章
基于JavaScript實(shí)現(xiàn)動(dòng)態(tài)添加刪除表格的行
又一個(gè)動(dòng)態(tài)控制表格的效果,用JavaScript動(dòng)態(tài)生成表格行、表格列,以及還可動(dòng)態(tài)刪除這些行列,行等,運(yùn)行代碼后,點(diǎn)擊對(duì)應(yīng)的功能按鈕,即可實(shí)現(xiàn)對(duì)應(yīng)的表格操作功能,接下來通過代碼實(shí)例給大家介紹JavaScript實(shí)現(xiàn)動(dòng)態(tài)添加刪除表格的行,需要的朋友參考下2016-02-02
JavaScript構(gòu)造函數(shù)原理及實(shí)現(xiàn)流程解析
這篇文章主要介紹了JavaScript構(gòu)造函數(shù)原理及實(shí)現(xiàn)流程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
關(guān)于ECharts設(shè)置x軸刻度間隔的兩種方式
這篇文章主要介紹了關(guān)于ECharts設(shè)置x軸刻度間隔的兩種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
基于Bootstrap的Metronic框架實(shí)現(xiàn)頁面鏈接收藏夾功能
本文給大家介紹基于Metronic的Bootstrap開發(fā)框架實(shí)現(xiàn)頁面鏈接收藏夾功能,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-08-08

