You've already forked guangan-mp
1.0.0
This commit is contained in:
77
uni_modules/uni-ajax/js_sdk/lib/utils.js
Normal file
77
uni_modules/uni-ajax/js_sdk/lib/utils.js
Normal file
@ -0,0 +1,77 @@
|
||||
/**
|
||||
* 获取值的原始类型字符串,例如 [object Object]
|
||||
*/
|
||||
const _toString = Object.prototype.toString
|
||||
|
||||
/**
|
||||
* 判断是否为数组
|
||||
* @param {*} val 要判断的值
|
||||
* @returns {boolean} 返回判断结果
|
||||
*/
|
||||
export function isArray(val) {
|
||||
return _toString.call(val) === '[object Array]'
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否为普通对象
|
||||
* @param {*} val 要判断的值
|
||||
* @returns {boolean} 返回判断结果
|
||||
*/
|
||||
export function isPlainObject(val) {
|
||||
return _toString.call(val) === '[object Object]'
|
||||
}
|
||||
|
||||
/**
|
||||
* 遍历
|
||||
* @param {object|array} obj 要迭代的对象
|
||||
* @param {function} fn 为每个项调用的回调
|
||||
*/
|
||||
export function forEach(obj, fn) {
|
||||
if (obj === null || obj === undefined) return
|
||||
if (typeof obj !== 'object') obj = [obj]
|
||||
if (isArray(obj)) {
|
||||
for (let i = 0, l = obj.length; i < l; i++) {
|
||||
fn.call(null, obj[i], i, obj)
|
||||
}
|
||||
} else {
|
||||
for (const k in obj) {
|
||||
if (Object.prototype.hasOwnProperty.call(obj, k)) {
|
||||
fn.call(null, obj[k], k, obj)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 对象深合并
|
||||
* @param {...object} args 对象
|
||||
* @returns {object} 合并后的对象
|
||||
*/
|
||||
export function merge(...args) {
|
||||
const result = {}
|
||||
for (let i = 0, l = args.length; i < l; i++) {
|
||||
if (isPlainObject(args[i])) {
|
||||
forEach(args[i], (val, key) => {
|
||||
result[key] = assign(result[key], val)
|
||||
})
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* 合并分配到目标对象
|
||||
* @param {*} target 目标对象
|
||||
* @param {*} source 源对象
|
||||
* @returns {*} 目标对象
|
||||
*/
|
||||
export function assign(target, source) {
|
||||
if (isPlainObject(target) && isPlainObject(source)) {
|
||||
return merge(target, source)
|
||||
} else if (isPlainObject(source)) {
|
||||
return merge({}, source)
|
||||
} else if (isArray(source)) {
|
||||
return source.slice()
|
||||
}
|
||||
return source
|
||||
}
|
Reference in New Issue
Block a user