程志辉博客 - 一个伪文艺青年
贵在坚持,难在坚持,成在坚持!
程志辉

方法一

[...new Set(test)];

方法二

Array.from()
  
const test = ['q', 'w', 'e', 'q', 'u', 'p']
Array.from(new Set(test))

方法三

function unique(arr) {
    const res = new Map();
    return arr.filter((a) => !res.has(a) && res.set(a, 1))
}

ES5

  1. 创建一个新的空数组,用来存放去重后的新数组.
  2. 利用for循环循环遍历需要去重的数组.
  3. 利用indexOf()方法查询遍历出的数组在新数组中是否出现,如果出现:则继续遍历数组,如未出现:则利用push方法添加到新数组中.
  4. 原数组循环遍历完成后,组建一个已经去除重复的新数组.
var arr = [1,3,4,5,6,7,4,3,2,4,5,6,7,3,2];
  function find(){
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
      if (newArr.indexOf(arr[i]) == -1 ) {
        newArr.push(arr[i]);
      }
    }
    document.write(newArr);
  }
  find(arr);

上面是最近面试碰到的一些问题,写在博客记录一下。

过阵子就入职了,但是还不会小程序,这几天在恶补,免得难堪。

小程序单行/多行 文本溢出解决方案。

display: block;
/* 单行文本溢出, 省略号代替 */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;


/* 多行文本溢出 省略号代替 */
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;

diff 算法

diff 算法是一种通过同层的树节点进行比较的高效算法,避免了对树进行逐层搜索遍历,所以时间复杂度只有 O(n)。diff 算法的在很多场景下都有应用,例如在 vue 虚拟 dom 渲染成真实 dom 的新旧 VNode 节点比较更新时,就用到了该算法。diff 算法有两个比较显著的特点:

比较只会在同层级进行, 不会跨层级比较。

在 diff 比较的过程中,循环从两边向中间收拢。

参照:https://www.infoq.cn/article/udlcpkh4iqb0cr5wgy7f

封装

1.封装功能函数
1)功能点要明确
2)函数内部保留固定的代码(静态代码)
3)将动态的代码抽取出来,由使用者提供最终的数据,以形参的形式提取
4)一个良好的功能函数应该要设置形参的默认值 (ES6直接设置形参里 ES5函数体IF判断
2.封装功能组件
1)功能点要明确
2)组件内部应该保留静态代码
3)将动态的数据提取成props,由使用者提供最终的数据
4)一个良好的组件应该设置组件props数据的必要性以及数据类型

2021年11月14日
Icefox Theme . 鄂ICP备16001608号-1