手写题

37 阅读1分钟

1.树形结构转数组

const tree = [
    {
        id: 1,
        name: "Node 1",
        children: [
            { id: 2, name: "Node 1.1" },
            { id: 3, name: "Node 1.2" },
            {
                id: 4,
                name: "Node 1.3",
                children: [{ id: 5, name: "Node 1.3.1" }],
            },
        ],
    },
];
//预期结果
[
    { id: 1, name: 'Node 1', parentId: null },
    { id: 2, name: 'Node 1.1', parentId: 1 },
    { id: 3, name: 'Node 1.2', parentId: 1 },
    { id: 4, name: 'Node 1.3', parentId: 1 },
    { id: 5, name: 'Node 1.3.1', parentId: 4 },
]

const convert  = (tree,parentId=null)=>{
    return tree.reduce((result,node)=>{
        let convertNode = {id:node.id,name:node.name,parentId:parentId}
        result.push(convertNode)
        if(node.children){
            let children = convert(node.children,node.id)
            result = result.concat(children)
        }
        return result
    },[])
}

2.字符串str2和字符串str1,编写函数判断str1重新排序后是否能组成str2

let str1 = "asdf", str2 = "ab"
function resort(str1, str2) {
    if (str2.length == 0 || str1.length == 0) return false
    for (let i = 0; i < str2.length; i++) {
        if (str1.indexOf(str2[i]) != -1) {
            str1.replace(str2[i], "")
        } else {
            return false
        }
    }
    return true
}
console.log(resort(str1, str2))