上面的数据结构中,不同层级的key可能会相同,实现一个方法,调用时更新上面数组的key值,使所有的key对应的值更新为新的随机数,并保证更新前相同的key更新为新值后也依然相同即可。
let data = [{ key:0.1234, child:{ key:0.2352, child:{ key:0.2354, child:{ key:0.9737 } } } },{ key:0.1234, child:{ key:0.2352, child:{ key:0.2354, child:{ key:0.9737 } } } }] function handleData(data){ let map = new Map() for(let i = 0;i < data.length;i++){ let item = data[i] let deep = (obj) => { if(map.has(obj.key)){ obj.key = map.get(obj.key) }else{ let random = Math.floor(Math.random() * 100) map.set(obj.key,random) obj.key = random } if(obj.child){ deep(obj.child) } } deep(item) } return data } function handleData(data){ let json = JSON.stringify(data) let arr = json.match(/0\.\d+/g) arr = Array.from(new Set(arr)) arr.map((item) => { let random = Math.floor(Math.random() * 100) json = json.replace(new RegExp(item,‘g‘,random)) }) return JSON.parse(json) }
原文:https://www.cnblogs.com/zhenjianyu/p/13357985.html