js的 算法 和 数据结构

js的 算法

1、对一个对象数组按照对象某个属性进行排序  : https://www.cnblogs.com/webcabana/p/7460038.html

  在做公交的项目中就碰到过这种算法问题,从后台请求回来的一大堆的数据,都需要前端处理。所以就把这个问题写进博客里。

   只要是 js的sort()方法 的使用:https://www.cnblogs.com/fnz0/p/7680297.html

     sort()方法 的执行过程

   (个人分析) sort()函数的 比较函数,在执行时,js程序会依次把 数组的项,两个两个的传递给比较函数的形参。

  根据比较函数的返回值 是否大于0,再决定传递进来的这两项是否要对换位置。

        arr.sort(function(a,b){
            return a-b;   // return的值为 正或0,则数组中a、b对应的实参 不调换位置。
        });               // return的值为 负,则数组中a、b对应的实参 调换位置。

   通过测试,发现数组arr中的取某两个项的组合,并没有全部都进入了比较函数中(这个内部是怎么实现的,我们可以不用深究),

  但是最后的结果就是按照顺序return中要求的比较的规则进行排序了。

      var arr = [4,3,8,2,6];
      console.log("起始",arr);
      arr.sort(function(a,b){
          console.log(a,b);  // 这里输出的并没有把arr所有的组合全部都执行了一遍比较函数,内部肯定通过某种方式实现了最少次的比较,得到数值所有项按照顺序排列。
          return a-b;     // 这里内部具体是通过什么机制实现的最少次比较的,可以不用太过深究
      });
      //  4 3
      //  4 8
      //  8 2
      //  4 2
      //  3 2
      //  8 6
      //  4 6

2、冒泡排序(将数值按照大小顺序进行排列): https://www.cnblogs.com/dushao/p/6004883.html

3、数组中的最小值和最大值:https://www.cnblogs.com/zhouyangla/p/8482010.html  或  https://www.cnblogs.com/ywx354980-bk/p/8718541.html

  a、排序法:     

  b、js中Math 对象的 min 和 max 方法 :

     min 和 max 方法的参数都是数值,而不是数组。所以要利用min和max方法必须要把数组的值一个一个取出来作为参数。

     apply方法 的第二个参数是数组,传递到 劫持(继承)对象方法的参数, 是数组中的值一个一个传递过去(而不是一个对象)。即 apply数组参数 --> 继承对象方法的arguments。而对象的参数是 arguments[ i ]

   注:不过es6中有一个  展开运算符(...),可以将数值或对象两边的 [] 或 {} 去掉的功能。所以min 和 max可以通过 展开运算符 直接实现。

  

 

 

4、数组中所有的值 与 一个已知值的 的差值的最小值:

    

个人体会:算法基本 和 数组有关,所以数组有关的API要熟练。

总结:一般在js中涉及到的算法就  排序算法、二分查找、动态规划(最好避免使用递归的算法,效率太低了,容易引起浏览器假死状态)


别人的关于js算法的博客:

1、JS常见的算法 : https://www.cnblogs.com/lvmylife/p/7208541.html

 

js的 数据结构

1、个人觉得,数据结构要考虑的也就对象、数组两种。其他的数据结构,很少去用到。

 


 

 

 

转载于:https://www.cnblogs.com/wfblog/p/9853415.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值