js数组去重的思路与缓动公式
前端开发的面试中,至少有一类题是必出的,那就是去重。什么叫去重呢?就是把一组字符串中重复出现的,都删除掉。
这种题重要的是解决的思路要正确,思路正确的话其实也很简单。无非就是一个for循环,然后把每个字符都在一个临时的对象上进行保存与比较。
思路如下:
1,使用for循环,循环每一个字符;
2,将循环的结果,保存在变量之中,这个变量,可以是对象,也可以是数组;
3,在每次循环中设置适当的if判断条件
伪代码:
var _v = 'adfaf';
var str = {};
str['a'] = 123;
str['b'] = 456;
for(...){
if( 第i个字符 in 临时对象中 ){
str[_v[i]]++;
} else {
就将此第i个字符,添加到对象中
str[_v[i]] = 1;
}
}
这类面试题所考核的知识点之一,就是对于js对象的键值对的知识点的掌握。
////////
arguments与arguments.callee,今天对它也进行了着重的讲解。虽然我个人觉得面试题中提到它并不多,但做为一个js的知识点,也是需要讲解的。
<!-- arguments -->
它,也是一个对象,但同时它是函数的内置属性。
它非常类似于数组,但又不是数组。
它有length长度方法,可以使用[n]来获取arguments成员;
但不能使用数组的相关方法。
它的length,长度是由实参决定的,而不是形参。
就是说,你向某函数中传入多少个值,
那么此函数的auguments的长度就是多少,
与此函数的形参无关。
<!-- -->
arguments有一个属性:callee [kɔ:ld],被召者,被叫,
它返回的是,此arguments对象它所在的当前函数的引用。
它在使用的时候,一般用来代替,“当前函数的名称”。
事实上,在递归中对于arguments.callee的应用比较多。
递归:
function xxx(n){
if(n>1){
<!-- xxx() -->
arguments.callee(n-1);//代替,“当前函数的名称”
}
}
////////
下午的时候主要讲了缓动公式。我们日常在用js或css来写页面动画的时候,需要用到一些动画函数,这些函数中已经封装好了各种的数学公式,以各种js或css方法的形式出现,
例如,
Linear:无缓动效果;easeIn;easeOut;easeInOut...
缓动公式其实长这样,
这些都是数学公式在js程序代码中的应用与实现。讲这些东西不是要让大家去推导这些数学公式,而是想让你们明白,咱们使用的各种动画函数,到底是如何起作用的。
通过各种实例来让大家了解并掌握上面那些知识点,因为它们是组成前端知识结构的细节。一句话,只是为了“知其然”。
- python中的小魔法(一)
- 由问题入手,步步爬出Python中赋值与拷贝的坑
- python爬取链家租房之获得每一页的房屋信息地址(持续更新)
- python使用正则表达式
- python在租房过程中的应用
- python爬虫反爬取---设置IP代理自动变换requests.get()中proxy的IP
- 【译】TensorFlow实现Batch Normalization
- 关于Python语言规范你需要知道的一些小tips
- R语言可视化——REmap(路径图)
- python面向对象
- 字符串hash入门
- R语言数据处理——数据合并与追加
- python爬取链家租房之获取房屋页面的详细信息(房名,地址,房价,面积,url)
- 信用卡“坏账”客户分析(二)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Qt编写安防视频监控系统27-GPU显示
- Qt编写安防视频监控系统28-摄像机点位
- Qt编写安防视频监控系统29-掉线重连
- Qt编写安防视频监控系统30-GPS运动轨迹
- Qt编写安防视频监控系统31-onvif设备搜索
- Qt编写安防视频监控系统32-onvif信息获取
- Qt编写安防视频监控系统33-onvif云台控制
- Qt编写安防视频监控系统34-onvif事件订阅
- Qt编写安防视频监控系统35-onvif抓拍图片
- Qt音视频开发1-vlc解码播放
- 【TBase开源版测评】分布式数据自动shard分片
- STL—mt19937
- 潘石屹用Python解决100个问题 | 字符类型统计
- 潘石屹用Python解决100个问题 | 分解质因数
- 使用Java Spring消费MySQL中的数据库存储过程