js 循环 for in
2015-12-08 10:38
190 查看
背景:由于对 for in 不熟悉,只在数组循环的时候使用过,在一次用 for in 遍历 json 数组的时候,调试看到是按照数组中字符逐个遍历,由于当时急,以为 for in 有什么不安全的地方,根本没来得及看,果断用 for 循环。后来想想,应该是当时没有将返回的结果反序列化,拙~~~。(后来写for 的时候应该是加了反序列化)。
1. for in 可循环遍历数组、对象(非数组对象上遍历也称枚举)、字符串:
var str = "test";
var obj = {a : 'a', b : 'b'};
var arr = [1, 2, 3, 4];
// 字符串:按序逐个输出字符
for(var ele in str) {
alert(str[ele]);
}
// 对象
for(var ele in obj){
alert(obj[ele]);
}
// 数组
for(var ele in arr){
alert(arr[ele]);
}
2. for in 不会按照属性下标输出
var data = {
'4': 'first',
'3': 'second',
'2': 'third',
'1': 'fourth'
};
for (var i in data) {
console.log(i + " " + data[i])
}
输出结果:
1 fourth
2 third
3 second
4 first
注:按照网上描述,如今所有浏览器的最新版本现在都按chrome的标准执行,先把当中的非负整数键提出来,排序好输出,然后将剩下的定义时的顺序输出。所以,在定义对象的时候,最好不要以纯数字定义键名。
3. for in 循环访问的是循环对象的原型
var array=[1,2,3,4,5];
Array.prototype.age=6;
var result = [];
for(var i=0;i<array.length;i++){
result.push(array[i]);
}
alert(result.join(''));
输出结果:12345;
var array=[1,2,3,4,5];
Array.prototype.age=6;
var result = [];
for(var i in array){
result.push(array[i]);
}
alert(result.join(''));
输出结果:123456
注 : 在数组遍历的时候,其实最好不要用 for in,for in 会访问该对象的原型,查看其原型下是否有属性,会增加循环额外的压力。
1. for in 可循环遍历数组、对象(非数组对象上遍历也称枚举)、字符串:
var str = "test";
var obj = {a : 'a', b : 'b'};
var arr = [1, 2, 3, 4];
// 字符串:按序逐个输出字符
for(var ele in str) {
alert(str[ele]);
}
// 对象
for(var ele in obj){
alert(obj[ele]);
}
// 数组
for(var ele in arr){
alert(arr[ele]);
}
2. for in 不会按照属性下标输出
var data = {
'4': 'first',
'3': 'second',
'2': 'third',
'1': 'fourth'
};
for (var i in data) {
console.log(i + " " + data[i])
}
输出结果:
1 fourth
2 third
3 second
4 first
注:按照网上描述,如今所有浏览器的最新版本现在都按chrome的标准执行,先把当中的非负整数键提出来,排序好输出,然后将剩下的定义时的顺序输出。所以,在定义对象的时候,最好不要以纯数字定义键名。
3. for in 循环访问的是循环对象的原型
var array=[1,2,3,4,5];
Array.prototype.age=6;
var result = [];
for(var i=0;i<array.length;i++){
result.push(array[i]);
}
alert(result.join(''));
输出结果:12345;
var array=[1,2,3,4,5];
Array.prototype.age=6;
var result = [];
for(var i in array){
result.push(array[i]);
}
alert(result.join(''));
输出结果:123456
注 : 在数组遍历的时候,其实最好不要用 for in,for in 会访问该对象的原型,查看其原型下是否有属性,会增加循环额外的压力。
相关文章推荐
- 详解js中构造流程图的核心技术JsPlumb(2)
- 【学习】JavaScript设计模式——认识设计模式
- 详解js中构造流程图的核心技术JsPlumb
- js中引用传递和值传递
- NewTonJson.Net的使用
- 常规功能和模块自定义系统 (cfcmms)—022自定义grid列(6图标列)
- ArcGIS API for javascript开发笔记(七)——使用ArcGIS API for javascript调用GP服务
- JavaScript基本数据类型
- JS操作XML实例总结(加载与解析XML文件、字符串)
- JavaScript 的性能优化:加载和执行
- javaweb开发-js代码中keypress事件调用判断,取得keyCode值
- js原生设计模式——9外观模式封装2(小型代码库YJ)
- js页面传参数时,参数值包含特殊字符的处理
- js原生设计模式——9外观模式封装
- JSP页面中引入js文件
- javascript常用方法函数收集
- javascript 中 instanceof 的执行机制
- JS获取月份最后天数、最大天数与某日周数的方法
- 2015年最新出炉的JavaScript开发框架
- javascript 保留两位小数