您的位置:首页 > Web前端 > JavaScript

JS技巧归纳

2014-02-11 17:32 176 查看
摘要:将学到和了解到的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;

});

执行结果:

[Object, Object, Object, clone: function]

0: Object

age: 20
name: "son"
__proto__: Object

1: Object

age: 40
name: "father"
__proto__: Object

2: Object

age: 60
name: "grandfather"

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

var src = [1,2,3];

var des = [4,5,6];

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

如此,就顺利的将两个数组合并到一起了,成功的运用了push接收多个参数和apply方法第二个参数须是数组的特点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: