js遍历对象

js学习:对象

本秂侑毒 提交于 2019-12-06 07:20:52
概述 对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型 生成方法 var obj = { foo: 'Hello', bar: 'World' }; 对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。 键名与键值之间用冒号分隔,两个键值对之间用逗号分隔 键名 对象的所有键名都是字符串(ES6 又引入了 Symbol 值也可以作为键名),所以加不加引号都可以。上面的代码也可以写成下面这样。 var obj = { 'foo': 'Hello', 'bar': 'World' }; 如果键名是数值,会被自动转为字符串。 var obj = { 1: 'a', 3.2: 'b', 1e2: true, 1e-2: true, .234: true, 0xFF: true }; obj // Object { // 1: "a", // 3.2: "b", // 100: true, // 0.01: true, // 0.234: true, // 255: true // } obj['100'] // true 上面代码中,对象obj的所有键名虽然看上去像数值,实际上都被自动转成了字符串。 如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。 // 报错

JS几种数组遍历方式总结

耗尽温柔 提交于 2019-12-05 14:13:22
JS数组遍历的几种方式 JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代码如下: for(j = 0; j < arr.length; j++) { } 简要说明: 最简单的一种,也是使用频率最高的一种,虽然性能不弱,但仍有优化空间 第二种:优化版for循环 代码如下: for(j = 0,len=arr.length; j < len; j++) { } 简要说明: 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。 这种方法基本上是所有循环遍历方法中性能最高的一种 第三种:弱化版for循环 代码如下: arr.forEach(function(e){ }); 第五种:foreach变种 代码如下: Array.prototype.forEach.call(arr,function(el){ }); 简要说明: 由于foreach是Array型自带的,对于一些非这种类型的,无法直接使用(如NodeList),所以才有了这个变种,使用这个变种可以让类似的数组拥有foreach功能。 实际性能要比普通foreach弱 第六种:forin循环 代码如下: for(j in arr) { } 简要说明: 这个循环很多人爱用

js数组遍历和对象遍历

我是研究僧i 提交于 2019-12-05 03:03:41
js数组遍历和对象遍历 针对js各种遍历作一个总结分析,从类型用处:分数组遍历和对象遍历;还有性能,优缺点等。 JS数组遍历: 1,普通for循环,经常用的数组遍历 var arr = [1,2,0,3,9]; for ( var i = 0; i <arr.length; i++){ console.log(arr[i]); } 2,优化版for循环:使用变量,将长度缓存起来,避免重复获取长度,数组很大时优化效果明显 for(var j = 0,len = arr.length; j < len; j++){ console.log(arr[j]); } 3,forEach,ES5推出的,数组自带的循环,主要功能是遍历数组,实际性能比for还弱 arr.forEach(function(value,i){   console.log('forEach遍历:'+i+'--'+value); }) forEach这种方法也有一个小缺陷:你不能使用 break 语句中断循环,也不能使用 return 语句返回到外层函数。 4,map遍历,map即是 “映射”的意思 用法与 forEach 相似 arr.map(function(value,index){ console.log('map遍历:'+index+'--'+value); }); map遍历支持使用return语句

$.each 和$(selector).each()的区别

南笙酒味 提交于 2019-12-04 22:59:36
译自官方手册: jQuery.each() 对数组或对对象内容进行循环处理 jQuery.each( collection, callback(indexInArray, valueOfElement) ) collection 遍历的对象或数组 callback(indexInArray, valueOfElement) 在每一个对象上调用的函数 说明 一个通用的遍历函数 , 可以用来遍历对象和数组. 数组和含有一个length属性的伪数组对象 (伪数组对象如function的arguments对象)以数字索引进行遍历,从0到length-1, 其它的对象通过的属性进行遍历. $.each()与 $(selector).each() 不同, 后者专用于jquery对象的遍历, 前者可用于遍历任何的集合(无论是数组或对象),如果是数组,回调函数每次传入数组的索引和对应的值(值亦可以通过this 关键字获取,但javascript总会包装this 值作为一个对象—尽管是一个字符串或是一个数字),方法会返回被遍历对象的第一参数 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //例子:———传入数组 <!DOCTYPE html> <html> <head> <script src=

js 数组遍历 对象遍历

我的未来我决定 提交于 2019-12-04 11:02:04
一、数组遍历 1,普通for循环,经常用的数组遍历 var arr = [1,2,0,3,9]; for ( var i = 0; i <arr.length; i++){ console.log(arr[i]); } 2,优化版for循环:使用变量,将长度缓存起来,避免重复获取长度,数组很大时优化效果明显 for(var j = 0,len = arr.length; j < len; j++){ console.log(arr[j]); } 3,forEach,ES5推出的,数组自带的循环,主要功能是遍历数组,实际性能比for还弱。 不能使用 break 语句中断循环,也不能使用 return 语句返回到外层函数。ie9以下的浏览器不支持 arr.forEach(function(value,i){   console.log('forEach遍历:'+i+'--'+value); }) 4,map遍历,map即是 “映射”的意思 用法与 forEach 相似 支持使用 return 语句,支持 return 返回值。ie9以下的浏览器不支持 arr.map(function(value,index){ console.log('map遍历:'+index+'--'+value); }); var temp=arr.map(function(val,index){

Jquery之each函数详解

末鹿安然 提交于 2019-12-04 05:33:26
目录 Jquery之each函数详解 全局jQuery.each() 函数详解 each函数处理一维数组 each函数遍历二维数组 使用each函数遍历对象属性 jQuery.each()函数同样可以遍历jQuery对象中匹配的元素 遍历Dom中的元素 再来看一个Json的子: 区别 $ ().each()和$.each()/jQuery.each() 总结 $().each $.each() Jquery之each函数详解 全局jQuery.each() 函数详解   所谓全局jQuery.each()函数也即是指$.each()函数,它可以用来遍历任何一个集合,不管是一个JavaScript对象或者是一个数组,或者是一个JSon对象。它的基本语法如下: $.each(collection, callback(indexInArray, valueOfElement) ) collection可以是数组,可以是任何一个JS对象或者JSON对象,callback我们称之为回掉函数;如果是一个数组的话,回调函数每次传递一个数组的下标和这个下标所对应的数组的值;callback回调函数用于遍历指定的对象和数组,并以对象的每个属性(或数组的每个成员)作为上下文来遍历执行指定的函数。 我们来看下面的几个例子大家就明白了: each函数处理一维数组 var arr1 = [ "aaa",

js循环数组(总结)

穿精又带淫゛_ 提交于 2019-12-03 05:35:42
js循环数组(总结) 一、总结 一句话总结: for循环:for(j = 0,len=arr.length; j < len; j++) {} foreach循环:arr.forEach((item,index,array)=>{//执行代码}) forof遍历:for (var value of myArray) { } 1、for循环的简单优化:for(j = 0,len=arr.length; j < len; j++) {}? 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。 2、foreach循环注意:arr.forEach((item,index,array)=>{//执行代码})? 遍历数组中的每一项,没有返回值,对原数组没有影响,不支持IE 参数:value数组中的当前项, index当前项的索引, array原始数组; 数组中有几项,那么传递进去的匿名回调函数就需要执行几次; 二、js数组遍历方法总结 转自或参考:js数组遍历方法总结 https://www.cnblogs.com/woshidouzia/p/9304603.html 数组遍历方法 1.for循环 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。 for(j = 0,len=arr.length; j < len; j++

ES6 --(7)数组的扩展

ぐ巨炮叔叔 提交于 2019-12-03 04:22:07
2019-11-01 我的学习: 🌟一、扩展运算符:…   将一个数组转为用逗号分隔的参数序列。多用于函数中。不再需要 apply 方法,将数组转为函数的参数了。   注意: 只有函数调用时,扩展运算符才可以放在圆括号中,否则会报错。 (...[1, 2]) // Uncaught SyntaxError: Unexpected number console.log((...[1, 2])) // Uncaught SyntaxError: Unexpected number console.log(...[1, 2]) // 1 2   … 与 apply的效果: // ES5 的写法 Math.max.apply(null, [14, 3, 77]) // ES6 的写法 Math.max(...[14, 3, 77]) // 等同于 Math.max(14, 3, 77); 应用: (1)深拷贝数组: const a1 = [1, 2]; const a2 = a1; a2[0] = 2; a1 // [2, 2] 浅拷贝,仅拷贝指针 //ES5 的深拷贝: const a1 = [1, 2]; const a2 = a1.concat(); a2[0] = 2; a1 // [1, 2] // ES6: const a1 = [1, 2]; // 写法一 const a2

JS对象遍历

匿名 (未验证) 提交于 2019-12-03 00:36:02
话不多说此篇阐述js对象遍历的常见方法以及遍历规则 1.常见遍历方法 方法 说明 结果 for...in 常规遍历得到key值,遍历自身及继承的可枚举属性 String Object.keys(obj); 遍历返回由key组成的数组,自身可枚举属性键名 [key1,key2,...] Object.values(obj); 遍历返回由value组成的数组 [val1,val2,...] Object.entries(obj); 遍历返回由[key,value]组成的数组 [[key1,val1],[key2,val2],...] Object.getOwnPropertyNames( obj ); 包含自身所有属性键名,Symbol不含 [key1,key2,...] Object.getOwnPropertySymols( obj ); 返回所有symbol属性键名 [symbol1,symbol2,...] Reflect.ownKeys(obj); 返回所有键名,包括不可枚举,symbol等 [key,symbol,...] 具体解释可以参考 阮一峰老师的教程 2.遍历规则 由于对象不像数组那样是连续的存储,因此遍历对象需要按照一定的规则来遍历 也就是说同样的对象key:val值因为顺序的不同遍历的结果可能是相同的 规则如下: 1. 遍历所有数值键,按照数值升序排列 2.

js值的比较和使用foreach遍历数据和条件编译

匿名 (未验证) 提交于 2019-12-03 00:19:01
js是自动强制自由型语言:所以 所以此时如过要判断其类型:应该使用===来判断 使用for in遍历数据时取值时用【key】(无论是遍历的数组还是map类型)来取值如下: for(var i in arr){ } JavaScript的条件编译: /*@cc_on @*/ /*@if (@_jscript_version >= 4) alert("JScript version 4 or better"); @else @*/ alert("You need a more recent script engine."); /*@end @*/ 在使用条件编译是要先使用 /*@cc_on @*/ 来启用条件编译。 Global 对象从不直接使用,并且不能用 new 运算符创建。 Global 对象没有语法。直接调用其方法。 文章来源: js值的比较和使用foreach遍历数据和条件编译