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方法第二个参数须是数组的特点。
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方法第二个参数须是数组的特点。
相关文章推荐
- js处理url的技巧和归纳
- js处理url的技巧和归纳
- 最鬼魅的一段js脚本(附:js脚本调试技巧)
- 转载:js技巧收集(200多个)
- 200多个js技巧代码
- 200多个js技巧代码
- 10 个优化技巧加快你的 Node.js 应用运行速度
- js风格技巧
- jquery.jtemplate.js 调试技巧
- 让你的 Node.js 应用跑得更快的 10 个技巧
- javascript常用技巧归纳
- 优化Node.js Web应用运行速度的10个技巧
- ReactJS实用技巧(1):JSX与HTML的那些不同
- js技巧收集(200多个)
- js技巧收集(200多个)
- js客户与服务器交互技巧
- JS数组声明技巧、数组动态添加元素
- JS高级技巧之函数节流
- js调试技巧
- js调试技巧 实用