어떤 값이 복잡한 객체나 배열에 포함되어 있는지를 알아보는 것은 인터뷰에서 자주 묻는다.
이 질문을 보았을 때 가장 먼저 떠오른 것은 재귀였습니다.
먼저 객체를 살펴보겠습니다.
let obj = {
age: 30,
name: '彭于晏',
hobby: ['运动', '唱歌', '游泳', {
bane: '122e',
nasd: {
asdn: {
adsa: {
size: 12
}
}
}
}],
app: {
names: 'wangxiaoj'
}
}
이것은 배열도 포함하는 중첩된 다단계 개체입니다.
시작:
먼저 함수를 작성해 보겠습니다.
값이 전달되면 먼저 값이 객체인지 배열인지 확인합니다.
function objDeep(params ={}){
if(typeof params !== 'object' ||typeof params === null){
return params
}
}
그런 다음 전체 개체를 반복합니다.
for (let i in params){
if (params[i] === 12){ // 当便利的对象 等于我们想查询的值 ,就打印输出并返回
console.log('成功', params);
return
// 如果不等于 且 遍历的还是一个对象或者一个数组,我们就进行递归
}else if(params[i] instanceof Array || params[i] instanceof Object){
aa(params[i])
}
}
전체 코드:
function objDeep(params ={}){
if(typeof params !== 'object' ||typeof params === null){
return params
}
for (let i in params){
if (params[i] === 12){
console.log('成功', params);
return
}else if(params[i] instanceof Array || params[i] instanceof Object){
objDeep(params[i])
}
}
}
let obj = {
age: 30,
name: '彭',
hobby: ['运动', '唱歌', '游泳', {
bane: '122e',
nasd: {
asdn: {
adsa: {
size: 12
}
}
}
}],
app: {
names: 'wangxiaoj'
}
}
objDeep(obj)