印象比较不错的编程题(1)

218 阅读1分钟

1.题目

2.例子

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
}