想了一个面试题

想出一个原创一点,不会太难,也不会太简单,考察候选人的平时练习和思维。有一个对象如下:

let obj = {
    a:1,
    b:{
        c: 2
    }
}

需要转换成:

<root>
    <a>1</a>
    <b>
        <c>2</c>
    </b>
</root>

该怎么实现呢?


function pad(count) {
    return '\n' + ''.padStart(count * 2)
}

function transfer(obj, tab = 0) {
    if(typeof obj !== 'object') return pad(tab) + obj
        
    let str = ''

    for(let k in obj) {
        let v = obj[k]
        str += pad(tab) + '<' + k + '>'
        str += transfer(v, tab + 1)
        str += pad(tab) + '</' + k + '>'
    }

    return str
}

console.log('results: ')
console.log(transfer(obj))

作者: 曾小乱

喜欢写点有意思的东西

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注