过滤对象中 值为null 或undefined的属性
1.filter && reduce
delEmptyData(obj = {}) { const params = Object.keys(obj).filter(s => obj[s] !== null).reduce((acc, key) => ({ ...acc, [key]: obj[key] }), {}) return params },
|
先filter处理值为null(可添加 && obj[s] !== undefined),再通过reduce传入初始{},回调循环将符合条件的属性和属性值合并到对象中,再返回一个新对象。
array.reduce((prev, cur, index, arr)=> { /***/ }, initialValue)
参数一: callback 函数(执行数组中每个值的函数,包含四个参数):
prev 必需 上一次调用回调返回的值,或者是提供的初始值(initialValue)) cur 必需(数组中当前被处理的元素) index 可选 (当前元素在数组中的索引) arr 可选 (调用 reduce 的数组) 参数二:initialValue 可选 (表示初始值,作为第一次调用 callback 的第一个参数。)
提供初始值,cur 从数组第一项开始,若不提供初始值,则 cur 从第二项开始执行,对应的第一次 prev 是数组第一项的值
|
2. delete
function isEmpty(obj) { if (typeof obj === 'undefined' || obj === null || obj === '') return true; return false } delEmptyData(formData) { Object.keys(formData).forEach(item => { if (this.isEmpty(formData[item])) { delete formData[item] } }) return formData; }
|