复习原生JS时做的小插件,通过递归的方法找到父级对象
function getParent(parent, value, addNum) { // 在这个数组中查找, 需要找的数组/对象/字符串等, 导出该数组的第几个父级(默认第一个)
function getParent1(parent, value, addNum) {
num = addNum ? addNum : 1
getParent2(parent, value, false, parent)
return val
}
function getParent2(parent, value, noNew, oldParent, oldParent2, oldParent3, oldParent4) {
let type = Object.prototype.toString.call(parent)
if (!noNew && type !== '[object Object]' && type !== '[object Array]') { // 格式错误判断
console.error('first argument is must a array or object')
return
}
if (parent === value) {
switch (num) {
case 1:
val = oldParent ? oldParent : false
break;
case 2:
val = oldParent2 ? oldParent2 : false
break;
case 3:
val = oldParent3 ? oldParent3 : false
break;
case 4:
val = oldParent4 ? oldParent4 : false
break;
}
}
if (type === '[object Object]') { // 遍历对象
Object.keys(parent).forEach(item => {
getParent2(parent[item], value, true, parent, oldParent, oldParent2, oldParent3)
})
} else if (type === '[object Array]') { // 遍历数组
parent.forEach(item => {
getParent2(item, value, true, parent, oldParent, oldParent2, oldParent3)
})
}
}
return getParent1(parent, value, addNum)
}
在某种情况下还是很实用的 : )