方法一
[...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
- 创建一个新的空数组,用来存放去重后的新数组.
- 利用for循环循环遍历需要去重的数组.
- 利用indexOf()方法查询遍历出的数组在新数组中是否出现,如果出现:则继续遍历数组,如未出现:则利用push方法添加到新数组中.
- 原数组循环遍历完成后,组建一个已经去除重复的新数组.
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数据的必要性以及数据类型
定格的封面她勾引我
催眠的代码,看不懂
感谢分享 赞一个
我是进来看美女照片的。。。
看不懂