美文网首页
JS数组和树结构之间的转换

JS数组和树结构之间的转换

作者: 夏海峰 | 来源:发表于2020-04-02 22:17 被阅读0次
第一道面试题

解答如下:

/**
 * 
 * @param {*} list 表示树状结构
 * @param {*} id 表示要查找的id
 * @param {*} superpath 递归时父节点的path路径
 */
function search(list, id, superpath) {
    // 遍历
    for(let i=0; i<list.length; i++) {
        // 给每个节点添加一个自定义属性 path,表示完整的路径
        list[i]['path'] = superpath ? superpath + '->' + list[i].id : list[i].id
        // 找到指定id节点时
        if (list[i].id === id) {
            return list[i].path
        }
        
        if (list[i].children && list[i].children.length > 0) {
            // 递归,第三个参数是父节点的path路径
            return search(list[i].children, id, list[i].path)
        }
    }
    // 如果找不到,返回 void
    return 'void'
}

测试一下:

let arr = [
    {
        id: 1,
        children: [
            { id: 2 },
            { id: 3, children: [
                { id: 4 },
                { id: 5 },
                { id: 6, children: [
                    { id: 7, children: [
                        { id: 8, children: [
                            { id: 9, children: []},
                            { id: 10, children: []}
                        ]}
                    ]}
                ]}
            ]}
        ]
    }
]

console.log(search(arr, 1))   // 1
console.log(search(arr, 3))   // 1->3
console.log(search(arr, 5))   // 1->3->5
console.log(search(arr, 7))   // 1->3->6->7
console.log(search(arr, 9))   // 1->3->6->7->8->9
console.log(search(arr, 11))   // void
第二道面试题

解答如下:

function transform(list, str) {
    list.map(ele=>{
        if (ele.length > 1) {
            str = str.replace(ele, '<em>'+ele+'</em>')
        }
        
    })
    return str
}

测试一下:

var arr = ['ad', 'b', 'ce']
var str = 'adsdbce'
console.log(transform(arr, str))   // <em>ad</em>sdb<em>ce</em>


--END--

相关文章

  • JS数组和树结构之间的转换

    解答如下: 测试一下: 解答如下: 测试一下: --END--

  • js 数组去重,格式转换方法

    1,对象数组去重 2,用js实现将二维数组格式化转换成树状数组 3,将树结构数据转换为一维数组 4, 数组去重

  • 数组检测

    检测是否是数组: 数组转字符串: 字符串转换数组: js对象转换成js字符串: js字符串转换成js对象:

  • 【转】js数组和树结构数据相互转换

    数组转树结构采取递归和非递归两种方式,树结构转扁平化数组采取深度优先遍历(递归和非递归两种方式)和广度优先遍历实现...

  • js玩转树结构

    树结构转换成数组treeToArray(tree) {let arr = [];let expand = (tre...

  • 前端方法

    背景透明色 js实现千分隔开数字 list转换为树结构

  • 数组和字符串的转换

    在实际开发中经常进行数据和字符串的转换。 今天总结一下数组与字符串之间的转换作为第一篇文章~ 介绍一下js中的数组...

  • 65.避开基本类型数组转换列表的陷阱

    Arrays 和 Collections 通常用来实现从数组到列表的转换数组和List之间的转换总结,非常方便,但...

  • 数组

    检测是否是数组: 数组转字符串:join("分隔符")字符串转换数组:split("分隔符") js对象转换成js...

  • JS,实现一维数组JSON树结构的转换

    1、方法思路使用js数组自带的filter()方法;数据格式要求,父子节点通过,Id,ParentId进行关联。默...

网友评论

      本文标题:JS数组和树结构之间的转换

      本文链接:https://www.haomeiwen.com/subject/lsafphtx.html