복잡한 개체 또는 배열에 특정 값이 포함되어 있는지 확인

어떤 값이 복잡한 객체나 배열에 포함되어 있는지를 알아보는 것은 인터뷰에서 자주 묻는다.

이 질문을 보았을 때 가장 먼저 떠오른 것은 재귀였습니다.

먼저 객체를 살펴보겠습니다.

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)

Guess you like

Origin blog.csdn.net/Cat_LIKE_Mouse/article/details/125635613