网站首页 > 知识剖析 正文
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
}
本文为原创内容,若转载请注明出处,转发感激不尽。
猜你喜欢
- 2024-11-18 深入了解:JSON.stringify的不可思议之处
- 2024-11-18 你不知道的JavaScript中的5个JSON秘密功能
- 2024-11-18 从业二十年的测试工程师今天给大家分享postman的使用技巧
- 2024-11-18 手把手教你JSON解析完Cube数据,如何输出到Excel
- 2024-11-18 「jQuery-5」 JavaScript对象和json
- 2024-11-18 亲手带你 Debug Fastjson 的安全漏洞
- 2024-11-18 JSON数据格式
- 2024-11-18 你不知道的JSON.stringify神操
- 2024-11-18 JSON如何解析
- 2024-11-18 38.JavaScript:try...catch异常处理
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)