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程序代码中的应用与实现。讲这些东西不是要让大家去推导这些数学公式,而是想让你们明白,咱们使用的各种动画函数,到底是如何起作用的。

通过各种实例来让大家了解并掌握上面那些知识点,因为它们是组成前端知识结构的细节。一句话,只是为了“知其然”。

原文发布于微信公众号 - web前端教室(webfeel)

原文发表时间:2017-06-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏nummy

numpy入门

numpy中最主要的对象是同质数组array,也就是说数组中的元素类型都是一样的。数组的维度也称之为axis,axis的的个数称之为秩rank。

12620
来自专栏程序员互动联盟

【编程基础】C语言循环语句解析

循环语句是一种很重要的结构,这种结构的特点就是在某种条件下,会重复循环执行某一段代码,直到条件不成立为止。这里的条件称为循环条件,重复执行的那段代码称为循环体。...

38650
来自专栏五分钟学算法

五分钟看懂一个高难度的排序:堆排序

堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。

11320
来自专栏数据结构与算法

06:整数奇偶排序

06:整数奇偶排序 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 给定10个整数的序列,要求对其重新排序。排序要求: 1...

40160
来自专栏积累沉淀

JavaScript面向对象与原型

javaScript有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性...

248100
来自专栏数据结构与算法

1341 与3和5无关的数

1341 与3和5无关的数 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description ...

28840
来自专栏武培轩的专栏

排序算法-冒泡排序

算法简介 冒泡排序(Bubble Sort)是一种典型的交换排序算法,持续比较相邻元素,大的挪到后面,因此大的会逐步往后挪,故称之为冒泡。 算法描述 比较相邻的...

35570
来自专栏数据结构与算法

P3372 【模板】线段树 1 区间查询与区间修改

题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个...

32360
来自专栏Jack-Cui

第七天、判断三角形的类型

    根据输入的三角形的三条边判断三角形的类型,并输出它的面积和类型。 C代码: /*第七天、判断三角形的类型*/ #include <stdio.h> ...

22300
来自专栏swag code

抽象类与抽象方法

在我们抽象实例对象的时候,有这样一种情况,往上层抽象时就会发现很难描述对象的属性和行为,比如“形状” ,其方法计算面积怎么计算?正方形知道怎么计算,长方形也知道...

8530

扫码关注云+社区

领取腾讯云代金券