Infinite

Infinite 查看完整档案

上海编辑  |  填写毕业院校  |  填写所在公司/组织 tsing.firebaseapp.com 编辑
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

Infinite 回答了问题 · 4月15日

js前端数据改造算法

实现思路比较简单,基本上就是处理新一条数据时,先看原有的一级数据存在与否,不存在直接用该条数据构建三级树,存在再看二级是否存在,存在就直接插入三级数据,不存在构建二级和三级就行了。代码如下:

data.reduce((acc, cur) => {
  const { name, name1, name2, value } = cur

  if (acc.name === name) {
    const item = acc.children.find(item => item.name === name1)
    if (item) {
      item.children.push({ name: name2, value })
    } else {
      acc.children.push({
        name: name1,
        children: [{ name: name2, value }],
      })
    }
  } else {
    acc = {
      name,
      children: [
        {
          name: name1,
          children: [{ name: name2, value }],
        },
      ],
    }
  }

  return acc
}, {})

关注 3 回答 2

Infinite 赞了回答 · 4月14日

字符串(1,2,3,4)取出id为1,2,3,4的name值,拼成一个字符串(小明,小林,珊珊,小唐)

首先我觉得你这个表设计有问题,你这种多对多的关系应该专门做一个中间表来进行关联,那么有一下几种方案:

  1. 做一个存储过程,搜一下解决方案很多,就是把字符串按照指定字符拆分成数组,然后利用JOIN进行查询;
  2. 先查A表数据,然后程序遍历这堆数据,然后拆分group_id,然后再从数据库里用id IN(group_ids)来把数据查询出来,然后再做组装;
  3. 做一个中间关联表,用JOIN进行关联查询出来。

从这问题来看,我估计你这数据没多少,用第二种形式应该就可以了,如果数据量大的话,然后再做个缓存,缓存方案的话,就是如果触发了某条数据的更新,再把某条数据对应的缓存删除,不然的话直接从缓存取数据,就降低了数据库的查询。

关注 5 回答 4

Infinite 回答了问题 · 4月14日

这种树结构的样式怎么写啊?有没有插件啊?vue的

这种通过样式,利用border就可以简单实现了,我这边实现了个大致的 demo , 你可以参考一下,一些地方比较粗劣,位置可能有点偏差,你自己再调整一下就好了

关注 4 回答 2

Infinite 回答了问题 · 4月14日

解决react hooks中memo方法的TS 类型描述要怎么写

我试了下,这样声明是可以的 codesandbox

import { memo, NamedExoticComponent } from "react";

interface LoginInterface extends NamedExoticComponent {
  abc?: () => void;
}

const Login: LoginInterface = memo(() => {
  return <div>h1</div>;
});

Login.abc = () => {};

关注 2 回答 1

Infinite 回答了问题 · 4月14日

nuxt中使用vue-particles的问题,部署服务器后报错'getElementsByClassName' of null

我看了particleJS的源码,找到以下代码和getElementsByClassName相关的,

window.particlesJS = function(tag_id, params){

  //console.log(params);

  /* no string id? so it's object params, and set the id with default id */
  if(typeof(tag_id) != 'string'){
    params = tag_id;
    tag_id = 'particles-js';
  }

  /* no id? set the id to default id */
  if(!tag_id){
    tag_id = 'particles-js';
  }

  /* pJS elements */
  var pJS_tag = document.getElementById(tag_id),
      pJS_canvas_class = 'particles-js-canvas-el',
      exist_canvas = pJS_tag.getElementsByClassName(pJS_canvas_class);
   // ...
}

由此可以得知,大概率在初始化particlesJS时,你对应的tag_id的dom还没有被创建出来,你可以看下是否是SSR时,导致了particlesJS优先于DOM加载了

关注 3 回答 3

Infinite 回答了问题 · 4月9日

TypeError: Cannot read property 'split' of undefined

加下断点,看下keyword的值和类型是不是字符串

关注 3 回答 2

Infinite 回答了问题 · 4月8日

react 路由怎么设置不能带search匹配?

我觉得可能是你其他地方做了404跳转,比如请求出错之类的,你找下有哪里会跳404

关注 2 回答 1

Infinite 回答了问题 · 4月7日

关于vue项目面试问题

我觉得前端来谈安全性都不靠谱,可能SSR安全性要更高一些,还有就是接口访问时做权限处理,不过这更多的算是后端的范畴

关注 2 回答 1

Infinite 回答了问题 · 4月7日

解决外部输入一字段去查数据库中该字段是否已经存在?

如果是需要插入数据库的话,我觉得可以给身份证号字段加上唯一性约束,然后插入的时候不判重,当插入报了唯一性错误的时候,记录这些出错的记录就行了。
如果不是插入的话,可以借助redis来实现,提前将已有的身份证号数据在redis中存一份,后续先取redis的数据进行查重处理,还可以借助布隆过滤器

关注 5 回答 4

Infinite 回答了问题 · 4月7日

解决请问div获取文本框的值

这不是基本的dom操作么?

const val1 = document.querySelector('#input1').value;
const val2 = document.querySelector('#input2').value;
document.querySelector('#div').innerText = val1 + val2;

关注 3 回答 2

认证与成就

  • 获得 28 次点赞
  • 获得 7 枚徽章 获得 1 枚金徽章, 获得 2 枚银徽章, 获得 4 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2015-08-25
个人主页被 1.5k 人浏览