领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

JSON.parse()和JSON.stringify()的惊奇用法

nixiaole 2024-11-18 15:30:43 知识剖析 34 ℃

JSON.parse()和JSON.stringify()对于前端工程师来说是经常使用的功能。平时我们主要用它们来处理js对象和字符串的互相解析。现在,老K来分享它们的几个惊奇用法。

js对象深度克隆的简洁实现

js字符串的克隆就比对象的克隆简单多了。简单的赋值操作就能完成。但是当键值是underfined,function,symbol类型时无法进行深拷贝。

let deepClone = obj => {
    try{
        var str = JSON.stringify(obj) //序列化对象
        return JSON.parse(str) //还原
    }catch(err){
        return err
    }
}

判断一个单链表是否有环

利用 JSON.stringify() 不能序列化含有循环引用的结构解决这个算法问题。

let hasCycle = function(head) {
    try{
        JSON.stringify(head)
        return false
    }
    catch(err){
        return true
    }
}

判断另一个树的子树

在javascript中,js对象可以代表树结构,通过把js对象序列化为字符串快速解决这个算法问题。

题目:给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} s
 * @param {TreeNode} t
 * @return {boolean}
 */
let isSubtree = function(s, t) {
    let str_s = JSON.stringify(s)
    let str_t = JSON.stringify(t)
    return (str_s.indexOf(str_t)>-1)?true:false
}



本文为原创内容,若转载请注明出处,转发感激不尽。

Tags:

最近发表
标签列表