js中for遍历数组和对象,及对象和数组之间的区别
2016-09-28 15:48
453 查看
数组和对象的区别
1)数组表示有序数据的集合,对象表示无序数据的集合。顺序重要,用数组,否则用对象。
2)数组的数据没有”名称”(name),对象的数据有”名称”(name)。
数组和对象的遍历
1)数组的遍历(for循环和for in循环都可以)
var arr=[1,2,3,4];
for( var i=0;i<arr.length;i++){
console.log(arr[i]);
}
2)对象的遍历
var arr={name:"wangjing","age":"23"};
for(var key in arr){
console.log(key+":"+arr[key]);
}
注:如果对象中key的值既有字符,又有数字的,则输出结果时,数字会在字符前面
var arr={name:"wangjing","age":"23",1:"wj"};
for(var key in arr){
console.log(key+":"+arr[key]);
}
输出结果:
3)类数组转化为数组
前提:
a. key的值为数字
b. 有length这个属性
实例:
var arr={length: 4,0:0,1:1,2:2,3:3};
var arr1=Array.prototype.slice.call(arr,0);
for(var i=0;i<arr1.length;i++){
console.log(arr1[i]);
}
注: Array.prototype.slice.call()可以将对象转换为数组,然后使用for进行数组的遍历
4)向函数中传递参数,当参数为普通变量时
var name="wang";
function change(n){
n="wangjing";
console.log(n);
}
change(name);
console.log(name);
输出结果为:wang
当传递的参数为普通变量时,函数内部通过形参改变值时,函数内部值发生变化,函数外边的实参并没有发生变化,因为在函数内部相当于创建了一个name变量的
副本,对副本进行操作
5)向函数中传递参数,当参数为对象或数组时
var arr={name:"wangjing",age:"23"};
function change(n){
n.name="520";
}
change(arr);
console.log(arr.name);
输出结果为 :520
因为传递的是地址,相当于对实参进行直接修改
6)向函数中传递参数,当参数为对象或数组时,对形参直接进行赋值操作,不会影响到实参的值
var arr={name:"wangjing",age:"23"};
function change(n){
n={name: "wj"};
}
change(arr);
console.log(arr.name);
输出结果: wangjing
Javascript中,对象的传递实际是引用地址的传递,当给函数设置属性时,对象的引用首地址并没有发生改变
在函数内部将传入引用的地址指向一个新的栈地址时,函数调用结束可能会导致引用指向无效的地址,故Javascript规范特别规定了,在函数内修改对象的引用地址时,函数
调用结束后引用地址不做改变。
1)数组表示有序数据的集合,对象表示无序数据的集合。顺序重要,用数组,否则用对象。
2)数组的数据没有”名称”(name),对象的数据有”名称”(name)。
数组和对象的遍历
1)数组的遍历(for循环和for in循环都可以)
var arr=[1,2,3,4];
for( var i=0;i<arr.length;i++){
console.log(arr[i]);
}
2)对象的遍历
var arr={name:"wangjing","age":"23"};
for(var key in arr){
console.log(key+":"+arr[key]);
}
注:如果对象中key的值既有字符,又有数字的,则输出结果时,数字会在字符前面
var arr={name:"wangjing","age":"23",1:"wj"};
for(var key in arr){
console.log(key+":"+arr[key]);
}
输出结果:
3)类数组转化为数组
前提:
a. key的值为数字
b. 有length这个属性
实例:
var arr={length: 4,0:0,1:1,2:2,3:3};
var arr1=Array.prototype.slice.call(arr,0);
for(var i=0;i<arr1.length;i++){
console.log(arr1[i]);
}
注: Array.prototype.slice.call()可以将对象转换为数组,然后使用for进行数组的遍历
4)向函数中传递参数,当参数为普通变量时
var name="wang";
function change(n){
n="wangjing";
console.log(n);
}
change(name);
console.log(name);
输出结果为:wang
当传递的参数为普通变量时,函数内部通过形参改变值时,函数内部值发生变化,函数外边的实参并没有发生变化,因为在函数内部相当于创建了一个name变量的
副本,对副本进行操作
5)向函数中传递参数,当参数为对象或数组时
var arr={name:"wangjing",age:"23"};
function change(n){
n.name="520";
}
change(arr);
console.log(arr.name);
输出结果为 :520
因为传递的是地址,相当于对实参进行直接修改
6)向函数中传递参数,当参数为对象或数组时,对形参直接进行赋值操作,不会影响到实参的值
var arr={name:"wangjing",age:"23"};
function change(n){
n={name: "wj"};
}
change(arr);
console.log(arr.name);
输出结果: wangjing
Javascript中,对象的传递实际是引用地址的传递,当给函数设置属性时,对象的引用首地址并没有发生改变
在函数内部将传入引用的地址指向一个新的栈地址时,函数调用结束可能会导致引用指向无效的地址,故Javascript规范特别规定了,在函数内修改对象的引用地址时,函数
调用结束后引用地址不做改变。
相关文章推荐
- js中遍历数组和对象的区别
- js中foreach,for in,for of的使用及区别,遍历对象,遍历数组使用的不一样 JavaScript
- 10-10 arguments存储实参、解决js获取CSS属性值兼容性、object对象、for语句遍历对象内容、数组中的方法
- js中数组遍历for与for in区别(强烈建议不要使用for in遍历数组)
- js中使用for 循环和 for in 遍历数组区别
- js遍历数组和遍历对象的区别
- js中数组遍历for与for in区别(强烈建议不要使用for in遍历数组)
- js遍历数组和遍历对象的区别
- JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
- js数组遍历和对象遍历的区别
- js遍历数组和遍历对象的区别
- js遍历数组和遍历对象的区别
- js遍历数组和遍历对象的区别
- js遍历数组和遍历对象的区别
- js遍历数组和遍历对象的区别
- JS数组的遍历方式for循环与for...in
- js深入学习专题 ------ 类数组的对象和数组对象的区别和联系
- js中数组与对象的遍历
- js 数组遍历for..in弊端
- JS之对象数组遍历?