a. 写一个加密方法,将指定的字符用等长度的 * 代码
var a = "helloworldfoobar123456foo"
var b = ["foo", "2345"]
fn(a, b) => helloworld***bar1****6***
const fn = (a, b) => {
let res = a
for(let item of b) {
let reg = new RegExp(item, 'gi');
while(res.indexOf(item) > -1) {
res = res.replace(reg, res => {
return res.split('').map(item => '*').join('')
})
}
}
return res;
}
console.log(fn('helloworldfoobar123456foo', ["foo", "2345"]))
b. 写一个方法将下面的平铺数组转成树形结构
var a = [
{
"id": "1",
"zoneName": "A",
"parentId": "0",
},
{
"id": "2",
"zoneName": "A1",
"parentId": "1",
},
{
"id": "9",
"zoneName": "B",
"parentId": "0",
},
{
"id": "5",
"zoneName": "A2",
"parentId": "1",
},
{
"id": "10",
"zoneName": "A21",
"parentId": "5",
}
];
fn(a) => [
{
"id": "1",
"zoneName": "A",
"parentId": "0",
"children": [
{
"id": "2",
"zoneName": "A1",
"parentId": "1",
},
{
"id": "5",
"zoneName": "A2",
"parentId": "1",
children: [
{
"id": "10",
"zoneName": "A21",
"parentId": "5",
}
]
},
]
},
{
"id": "9",
"zoneName": "B",
"parentId": "0",
}
];
const fn = a => {
let arr = [];
let map = {}
for(let m of a) {
let item = map[a.id] = {
...m,
children: []
}
if(m.parentId === '0') {
res.push(item)
} else {
map[a.parentId].children.push(item)
}
}
return arr;
}