/**
* [多维数组解一维]
* @param {Array } array [待处理数组]
* @param {Number} depth [解构深度]
* @return {Array } [返回新数组]
*/
function flattenDepth(array, depth = 1) {
// 创建一个新数组
let result = [];
array.forEach( item => {
if(Array.isArray(item) && depth > 0) {
// 递归解构
result.push(...(flattenDepth(item, --depth)))
} else {
result.push(item)
}
} )
return result;
};
/**
* [cloneValue 对象拷贝]
* @param {[type]} value [待处理对象]
* @param {Boolean} isDeep [深浅拷贝]
* @return {[type]} [结果]
*/
function cloneValue(value, isDeep) {
if(value === null) return null;
if(typeof value !== 'object') return value;
if(Array.isArray(value)) {
if(isDeep) {
return value.map( item => cloneValue(item, true) )
}
return [].concat(value);
} else {
if(isDeep) {
let obj = {};
Object.keys(value).forEach( item => {
obj[item] = cloneValue(value[item], true)
} );
return obj;
}
return { ...value }
}
}
function debounce(fun, wait) {
let timer;
return function () {
let context = this;
let args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
fun.apply(context, args);
}, wait);
}
}
js工具
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 本文虽然写的是 framer.js,但是却主要是给前端或者 node 程序员看的。因为其中用到的方法可能对于设计师...