在开发过程中经常遇到后端返回的数据不规范的问题, 返回的数据进行进一步处理调用其他方法的时候经常出现报错, 原因多种多样, 在这里自己封装了一些常用的对后端返回数据进行
function returnDataType (data) {
let str = Object.prototype.toString.call(data),
type = '';
if (str && str.length && str.length > 8) {
type = str.substring(8, str.length - 1).toLowerCase()
}
if (type === 'number' && isNaN(data)) {
type = 'NaN'
}
return type
}
function returnNumber (data) {
let result = 0;
if (returnDataType(data) === 'number') {
if (data > Number.MAX_SAFE_INTEGER) {
result = BigInt(data)
} else {
result = data
}
} else if (returnDataType(data) === 'string') {
if (data === '' || isNaN(+ data)) {
result = 0
} else {
if (data > Number.MAX_SAFE_INTEGER) {
result = BigInt(data)
} else {
result = + data
}
}
}
return result
}
function returnString (data) {
let str = ''
if (returnDataType(data) === 'number') {
if (data === 0) {
str = ''
} else {
str = data + ''
}
} else if (returnDataType(data) === 'string') {
str = data
} else if (returnDataType(data) === 'array') {
str = data.toString()
}
return str
}
function returnArray (data) {
let ary = []
if (returnDataType(data) === 'array') {
ary = data
} else if (returnDataType(data) === 'string') {
try {
let arr = JSON.parse(data)
if (arr && Array.isArray(arr)) {
ary = arr
} else {
ary = []
}
} catch (err) {
ary = []
}
}
return ary
}
function returnObject (data) {
let obj = {}
if (returnDataType(data) === 'object') {
obj = data
} else if (returnDataType(data) === 'string') {
try {
let objJson = JSON.parse(data)
if (returnDataType(objJson) === 'object') {
obj = objJson
}
} catch (error) {
obj = {}
}
}
return obj
}
export default {
returnDataType,
returnNumber,
returnString,
returnArray,
returnObject,
}