天天看点

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

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}
           
indexof的用法_JSON.parse()和JSON.stringify()的惊奇用法

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

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