上面的数据结构中,不同层级的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