我太菜了,稍微复杂点的业务逻辑就不会写了。

原创 野人  2022-01-10 20:26  阅读 69 次

真的是太久没有写难的业务逻辑了,导致稍微难的业务逻辑,都要想好久好久,这不今天就遇到难的逻辑了。

最后实在捣鼓不出来,不想浪费时间了,于是就求助于万能的群友了,最终解决了,这给我打击的,不要不要的,我要去刷LeetCode了(就你,还是算了吧,碰到稍微难点的题目,就放弃了,省省吧)。

那么我也给大伙们分享下,我遇到的题目吧(看看我有多?):

//给定以下的数据
let arr = [
  { path: 'test/1.txt', stream: '' },
  { path: 'test/文件夹1/1-1.txt', stream: '' },
  { path: 'test/文件夹2/2-1.txt', stream: '' },
];

//组合成这样的数据
let tree = [
  {
    title: 'test',
    children: [
      {
        title: '1.txt',
        children: [],
      },
      {
        title: '文件夹1',
        children: [
          {
            title: '1-1.txt',
            children: [],
          },
        ],
      },
      {
        title: '文件夹2',
        children: [
          {
            title: '2-1.txt',
            children: [],
          },
        ],
      },
    ],
  },
];

从头到尾,我的脑袋瓜里想到的只有递归才能做的出来,结果啪啪的打脸了,大佬用了两层的循环+半个小时不到,写完了,我自闭了。

//大佬的题解,接上面
let tree1 = [];
for (const item of arr) {
  const pathArr = item.path.split('/');
  let tem = tree1;//关键思路①
  for (let i = 0; i < pathArr.length; i++) {
    const index = tem.findIndex((item) => item.title === pathArr[i]);
    if (index < 0) {
      const newAddIndex = tem.push({
        title: pathArr[i],
        children: [],
      });
      tem = tem[newAddIndex - 1].children;//关键思路②
    } else {
      tem = tem[index].children;//关键思路③
    }
  }
}
console.log(tree1);

在看完大佬的解题思路后,直呼妙啊,强啊,道谢后,就马上滚去继续完成下面的部分代码了。

其实,大家如果有兴趣学编程的话,可不要被我说的跑啦,其实所谓的业务逻辑,大家真遇到了就把它当成数学题去做就好了,一类的题目都有对应的解题方法,记住这类题的解题思路/技巧,下次再遇到就给解决不就好了。

要自己那些大佬也是从小白过来的,所以只要我们不认输,有死磕,持续学习的精神,成为大佬指日可待啊,而且大佬们都很谦虚的,你们都不知道大佬还安慰我呢,叫我多看看一些经典项目里面的代码,学学人家的架构/思路。

所以你们给我等着,等着我写完文章了啊,跑啦,哈哈哈。

本文地址:https://www.yerenwz.com/5537.html
版权声明:本文为原创文章,版权归 野人 所有,欢迎分享本文,转载请保留出处!

发表评论