- 实现下划线转小驼峰
链接
function toUpper(obj){
let str = JSON.stringify(obj)
const res = str.replace(/\_(\w)/g,(val)=>val[1].toUpperCase())
return JSON.parse(res)
}
function clone(obj){
if(obj === null)return null
if(typeof obj === 'object')return obj
if(obj instanceof RegExp)return new RegExp(obj)
if(obj instanceof Date)return new Date(obj)
const cloneObj = new obj.constructor()
for(let key in obj){
if(!obj.hasOwnProperty(key))break
const str = key.replace(/\_(\w)/g,(val)=>val[1].toUpperCase())
cloneObj[str] = clone(obj[key])
}
return cloneObj
}
- 展平数组
function test(arr){
return arr.toString().split(',')
}
function flat(val) {
let res = []
function test(arr) {
arr.forEach((item) => Array.isArray(item) ? test(item) : (res.push(item)))
}
test(val)
return res
}
const arr = [1, Date, [undefined, false, [null, {}, [], 2n, [Number(1), Boolean(true), [9], 11], 12], 13], 14]
- 对象拼接成树(多棵树,二级结构无children)
function objToTree(arr) {
const res = []
const roots = arr.filter(item => item.pid === 0)
function format(node, arrList) {
const children = arrList
.filter(val => val.pid === node.id)
.map(item => format(item, arrList))
return {...node, children}
}
roots.forEach(item => res.push(format(item,arr)))
return res
}
- 实现 检测 package.json 数据有无依赖循环