上面的數據結構中,不同層級的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)
}
