JS技巧归纳

摘要:将学到和了解到的JS比较好用的技巧归纳在此。

1、join()方法

     遍历一个对象所有属性,将其按‘key:key_value’形式拼接起来,可以借助join()方法来实现:

     function joinKey(object) {

          var res = [];

          for(var key in object) {

              if(typeof(object[key]) !== 'function') {

                     res.push([key, ':', object[key]].join(''));

              }

          }

         return res.join(' ');

     }

2、Array.prototype.slice 方法

最常见功能:数组截取因为slice方法不会修改源数组,所以这一截取操作可看作数组的拷贝)

slice(start,end):返回从start开始到end前一位置之间的所有元素构成的数组

var arr = [a,b,c,d,e];

arr.slice(0,3) --> [a,b,c]

arr.slice(0,5) --> [a,b,c,d,e](end大于length时也仅仅截取到最后一个元素,不会出现undefined等未知元素值)

arr.slice(-1,2) --> [] //空数组,等价于arr.slice(5-1,2)=arr.slice(4,2)

arr.slice(1,-2) --> [b,c] 等价于arr.slice(1,5-2)=arr.slice(1,3)

arr.slice(1) --> [b,c,d,e] 省略end时,会一直复制到源数组的结尾

arr.slice()-->[a,b,c,d,e] 浅拷贝

特殊功能:将“类数组”元素(如节点列表和属性列表等)转换成真正的数组

var nodesArr = Array.prototype.slice.call(document.querySelectorAll("input")); 

将html中所有input节点抓住,统一放在nodesArr数组中。


3、sort实现对象排序

sort(function(a,b) {

  return a-b;

});

匿名函数给出的规则是升序排列,这是为什么?

原因在于sort方法根据入参的正负来决定是否交换当前的两个操作数,参数为正数则交互,否则不予交换。

对a-b,当且仅当a>b时值大于0,换言之,当a大于b时,交换a和b的前后顺序,是以有a-b为升序排列。

使用sort对数组排序已经司空见惯,然而sort也可以操作对象:

   var resArr = [  
    { name: "father", age: 40 },  
    { name: "son", age: 20 },  
    { name: "grandfather", age: 60  }  
  ].sort(function(obj1, obj2) {   
    return obj1.age - obj2.age;  
}); 

执行结果:

[ObjectObjectObjectclonefunction]
  1. 0Object
    1. age20
    2. name"son"
    3. __proto__Object
  2. 1Object
    1. age40
    2. name"father"
    3. __proto__Object
  3. 2Object
    1. age60
    2. name"grandfather"

 

4、巧用push和apply实现数组合并

var src = [1,2,3];

var des = [4,5,6];

Array.prototype.push.apply(des, src);

如此,就顺利的将两个数组合并到一起了,成功的运用了push接收多个参数和apply方法第二个参数须是数组的特点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值