本文给大家 js 遍历数组和遍历对象的区别,一般来说 for 用来遍历数组对象而 for-in 用来遍历非数组对象。接下来小编给大家带来了 js 遍历数组和对象的区别及 js 递归遍历对象、数组、属性的方法详解,一起看下吧
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
废话不多说了,直奔主题,你,具体代码如下所示:
- <script>
- //----------------for用来遍历数组对象--
- var i, myArr = [1, 2, 3];
- for (var i = 0; i < myArr.length; i++) {
- console.log(i + ":" + myArr[i]);
- };
- //---------for-in 用来遍历非数组对象
- var man = {
- hands: 2,
- legs: 2,
- heads: 1
- };
- //为所有的对象添加clone方法,即给内置原型(object,Array,function)增加原型属性,该方法很强大,也很危险
- if (typeof Object.prototype.clone === "undefined") {
- Object.prototype.clone = function() {};
- }
- //
- for (var i in man) {
- if (man.hasOwnProperty(i)) { //filter,只输出man的私有属性
- console.log(i, ":", man[i]);
- };
- }
- //输出结果为print hands:2,legs:2,heads:1
- for (var i in man) { //不使用过滤
- console.log(i, ":", man[i]);
- }
- //输出结果为
- //hands : 2 index.html:20
- //legs : 2 index.html:20
- //heads : 1 index.html:20
- //clone : function (){}
- for (var i in man) {
- if (Object.prototype.hasOwnProperty.call(man, i)) { //过滤
- console.log(i, ":", man[i]);
- }
- } //输出结果为print hands:2,legs:2,heads:1
- </script>
接下来给大家介绍 js 递归遍历对象、数组、属性
在前端工作时,有时我们需要遍历一些未知类型的对象。代码如下:
//js 遍历对象
function TraversalObject(obj)
{
for (var a in obj) {
if (typeof (obj[a]) == "object") {
TraversalObject(obj[a]); // 递归遍历
}
else {
alert(a +"="+ obj[a]);// 值就显示
}
}
}
// 遍历对象中所有 Ur 的值
function TraversalObject(obj)
{
for (var a in obj) {
if(a=="Url") alert(obj[a]);/ / 显示 URL 的值
if (typeof (obj[a]) == "object") {
TraversalObject(obj[a]); // 递归遍历
}
}
}
这种遍历方法在对象不规则但需要获取相同属性时起到非常好的作用。
来源: http://www.phperz.com/article/17/0303/264870.html