处理数据 - handleData
上面的数据结构中,不同层级的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 = parseFloat(Math.random().toFixed(4)) map.set(obj.key,random) obj.key = random } if(obj.child){ deep(obj.child) } } deep(item) } return data }
序列化方式
function handleData(data = data){ let json = JSON.stringify(data) let arr = Array.from(new Set(json.match(/0\.\d+/g))) arr.map(item => { let random = Math.random().toFixed(4) json = json.replace(new RegExp(item,'g'),random) }) return JSON.parse(json) }
以自己现在的努力程度,还没有资格和别人拼天赋