1.题目
let variable = [12,{no:'1',id:666,realPay:90,item:[{id:189}]}]
let keys = ['id','no']
//output: {id:666,no:'1'}
3.我的解答
function getTargetObj(variable,keys) {
let findObj = {}
function findTargetObj(obj,keys) {
let Objkeys = Object.keys(obj)
let isTarget = keys.every(item=>Objkeys.includes(item))
if(isTarget){
return keys.reduce((acc,item)=>{acc = Object.assign(acc,{[item]:obj[item]});return acc},{})
}else {
return false
}
}
function getType(variable) {
return Object.prototype.toString.call(variable).slice(8,-1)
}
function buildObj(variable,keys) {
if(getType(variable) === 'Object') {
let findTarget = findTargetObj(variable,keys)
if(findTarget) {
findObj = findTarget
return
}
for(let key in variable) {
buildObj(variable[key],keys)
}
}else if(getType(variable) === 'Array') {
for(let item of variable) {
buildObj(item,keys)
}
}
}
buildObj(variable,keys)
return findObj
}