遍历应该是各种语言中常会用到的操作了,实现的方法也很多,例如使用for、while等循环语句就可以很轻松的做到对数组或对象的遍历,今天想讲的不是它们,而是简单方便的遍历方法。

  大致的整理了一下,经常用到的大概有Jquery的$.each、$.map、each()、map()、get()、toArray()以及js原生的forEach()吧,当然肯定还有一些我不知道的,今天就先谈谈$.each()和$.map()区别。

$.each()

$.each()方法可用于遍历任何对象(包括数组),结构为:$.each(array/object,function(index/key,value){ code })。index指遍历对象成员的索引,value指成员的内容。如果需要退出循环可使回调函数返回 false,其它返回值将被忽略。

上栗子:

//遍历数组
$(function(){
var arr = ["a","b","c","d"];
$.each(arr,function(index,value){
console.log(value+" "+index);
});
});
结果依次输出
a0
b1
c2
d3 如果你在循环中放入console.log(this),结果会依次输出string{a}。。。也就是表明返回值为对象。 //遍历对象
$(function(){
var obj = {name:"tony",age:18,job:"adc"}
$.each(obj,function(key,value){
console.log(key+" "+value);
});
});
结果依次输出
name tony
age 18
job adc

$.map()

$.map()方法可以在遍历数组或对象成员的同时,经过回调函数的调用,然后转换到另一个新的数组中(这也是和$.each()的最大区别)。

结构:$.map(array/object,function(value,index/key){ code }),index指遍历对象成员的索引,value指成员的内容。如果需要退出循环可使回调函数返回 false,其它返回值将被忽略。

看栗子:

//遍历数组
$(function(){
var arr = ["a","b","c","d"];
var arr1 = $.map(arr,function(value,index){ //注意回调函数的参数位置和$.each()的不一致
console.log(index+value);
var val = value.toUpperCase();//可以在回调函数中对成员进行操作,然后将其返回到新的数组中。toUpperCase()方法转换字符为大写。
return val;//一定要使用return返回值,否则新数组接受不到
});
console.log(arr1);
 var res = Object.prototype.toString.call(obj1);//使用Object.prototype.toString.call()方法返回传入变量的类型
 console.log(res);
});
首先依次输出遍历的结果
a0
b1
c2
d3
输出arr1的结果(可以看出是返回值组成的新数组)
[A,B,C,D]
输出res结果为
Object Array (遍历对象可以参照$.each()方法,只不过返回的仍然是数组)

在这里有的同学可能就会疑问$.each()是否也会生成新的数组,眼见为实:

继续栗子:

$(function(){
var arr = ["a","b","c","d"];
var arr1 = $.each(arr,function(index,value){
var val = value.toUpperCase();
return val;
});
console.log(arr1);
});
/*输出的结果仍然为
[a,b,c,d]
所以说明返回的只是原数组,而不是生成新数组*/

最新文章

  1. free
  2. LR12.53—第1课:构建Vuser脚本
  3. VSS记住用户名和密码
  4. Win7与XP共享互相访问及共享注意事项!
  5. Linux查看系统配置常用命令
  6. 繁华模拟赛 Vincent的城堡
  7. Commons-Beanutils包详解
  8. Tkinter教程之Canvas篇(1)
  9. ZOJ 4114 Detect the Virus(AC自动机)
  10. java中printf中用法详解
  11. HTML中的<audio>和<video>标签讲解
  12. TSC条码打印机C#例程(tsclib.dll调用) 【转】
  13. 细说shiro之六:session管理
  14. SQL攻击-预编译--缓存
  15. 启动虚拟机提示"Units specified don’t exist SHSUCDX can’t install"
  16. web自动化测试与Appuim自动化测试对比
  17. HTML解析利器HtmlAgilityPack
  18. Python Cookbook 笔记--12章并发编程
  19. java-多线程future等待返回
  20. RabbitMQ和Kafka,更加便捷高效的消息队列使用方式,请放心食用

热门文章

  1. Iterm2/Mac自带终端工具快速进入你想进入的虚拟机教程
  2. pytest框架之命令行参数1
  3. JDK、JRE、JVM三者间的联系与区别
  4. cassandra读源码---Streaming
  5. Ocelot.JwtAuthorize:一个基于网关的Jwt验证包
  6. SystemUI
  7. 学习ASP.NET Core Razor 编程系列十四——文件上传功能(二)
  8. 避免Linux上错删文件
  9. 强化学习(六)时序差分在线控制算法SARSA
  10. T4模板简单了解