求阶乘:
function fun(n) {
if (n == 1) return 1
return fun(n - 1) * n
i--;
}
console.log(fun(3));
斐波那契数列:
function fbnq(num) {
if (num == 1 || num == 2) return 1
return fbnq(num - 1) + fbnq(num - 2)
num--;
}
console.log(fbnq(6));
递归遍历数据:
var data = [
{
"id": 1,
"name": "家电",
"goods": [
{
"id": 11,
"gname": "冰箱",
"goods": [
{
"id": 111,
"gname": "海尔"
}, {
"id": 112,
"gname": "美的"
}
]
},
{
"id": 12,
"gname": "洗衣机"
}
]
},
{
"id": 2,
"name": "服饰"
}
];
function getId(json, id) {
var o = {};
json.forEach(function (item) {
if (item.id == id) {
o = item
}
else if (item.goods && item.goods.length) {
o = getId(item.goods, id)
}
})
return o
}
console.log(getId(data, 1));
console.log(getId(data, 2));
console.log(getId(data, 111));
console.log(getId(data, 211));
树形结构和平铺结构的转换:
1.正向-树形结构转平铺
function treeToArr(data, pid=null, res=[]) {
data.forEach(item => {
res.push({ pid: pid, id: item.id, name: item.name });
if(item.children && item.children.length !== 0) {
treeToArr(item.children, item.id, res);
}
});
return res;
};
const arr = treeToArr(data);
console.log(arr);
2.逆向-平铺结构转树形
function arrToTree(arr, pid=null) {
const res = [];
arr.forEach(item => {
if(item.pid === pid) {
const children = arrToTree(arr.filter(v => v.pid !== pid), item.id);
if(children.length) {
res.push({ ...item, children })
}else {
res.push({ ...item })
}
}
});
return res;
};
const tree = arrToTree(arr);
console.log(JSON.stringify(tree, null, 2));