一、遍历数组的几种方式
 
var arr = [1,2,3];
Array.prototype.test=function(){}
arr.name='jq'
 
1、 for 
/*
* index是number类型的,可以使用break,continue,return语句
* 可以遍历对象
*/
for (var index = 0, length = arr.length; index < length; index++) {
console.log(index); // 0, 1, 2
console.log(arr[index]); // 1, 2, 3
}
2、 for in 遍历数组索引
/*
* 除了遍历数组元素外,还会遍历自身可枚举属性,以及原型链上属性
* 适用于普通对象,不适合数组遍历
* 可以使用break,continue,return语句
*/ for (var index in arr) {
console.log(index); // 0, 1, 2, name, test
console.log(arr[index]); // 1, 2, 3, jq, ƒ (){}
}
3、 for of 遍历数组元素值
/*
* 只遍历数组元素
* 只适用于数组,Set,Map,类似数组对象,不适合普通对象对象
* 可以使用break,continue,return语句
*/ for (var item of arr) {
console.log(item); // 1, 2, 3
}
4、 forEach 对数组每个元素执行一次提供的函数
/*
* 只遍历数组元素
* 参数:item 数组元素当前值,index 数组索引,array 数组本身
* 只适用于数组,Set,Map,类似数组对象,不适合普通对象对象
* break,continue,return语句无效
*/ arr.forEach(function(item, index, array) {
console.log(index); // 0, 1, 2
console.log(item); // 1, 2, 3
})
5、 map 对数组元素处理,并返回一个新数组,原始数组不会被改变
/*
* 只适用于数组,Set,Map,类似数组对象,不适合普通对象对象
* break,continue,return语句无效
* 参数:item 数组元素当前值,index 数组索引,array 数组本身
*/ arr.map(function(item, index, array) {
console.log(index); // 0, 1, 2
console.log(item); // 1, 2, 3
return 0;
})
6、 reduce = map + filter
/*
* reduce 使用回调函数迭代地将数组简化为单一值
* 只适用于数组,Set,Map,类似数组对象,不适合普通对象对象
* 参数:callback 和 初始值
* accumulator: 函数上一次调用的返回值
* item: item 数组元素当前值
*/ (1) 省略初始值,则accumulator为 arr[0], item为arr[1], index为1
arr.reduce(function(accumulator, item, index, array) {
return accumulator + item; //求数组元素和
}); 执行顺序:
1 + 2
3 + 3 (2) 有初始值,则accumulator为initValue,item为arr[0], index为0
arr.reduce(function(accumulator, item, index, array) {
return accumulator + item; //求数组元素和
}, 0); 执行顺序:
0 + 1
1 + 2
3 + 3 优点:减少数组迭代次数
 
(7) filter 返回符合指定条件的新数组
/*
* 只适用于数组,Set,Map,类似数组对象,不适合普通对象对象
* item: item 当前数组元素
*/ arr.filter(function(item, index, array) {
return (item > 1);
}) 结果:[2, 3]
8、 find 返回符合指定条件的第一个元素/*
* 只适用于数组,Set,Map,类似数组对象,不适合普通对象对象
* item: item 当前数组元素
*/ arr.find(function(item, index, array) {
return (item > 1);
}) 结果:2
二、遍历对象的几种方式
1、for
2、for in
3、将对象转为数组Object.keys

数组&对象的更多相关文章

  1. 了解JavaScript 数组对象及其方法

    数组在我目前学习过的编程语言中都可以见到, 形形色色的方法也数不胜数, 不过功能都一样, 最多也就是方法名稍稍有所不同, 老外也没个准啊, 如果英语比较好的同学对于学习方法(method)来说是很快的 ...

  2. 简述JavaScript对象、数组对象与类数组对象

    问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...

  3. java数组对象的浅层复制与深层复制

    实际上,java中数组对象的浅层复制只是复制了对象的引用(参考),而深层复制的才是对象所代表的值.

  4. MongoDB学习笔记~官方驱动嵌套数组对象的更新

    回到目录 对于数组对象mongodb本身是支持的,不过对于数组的更新,mongodb的Csharp驱动目前只支持一级,即你的对象里包含数组,而数组又包括数组,这表示两层,这在更新子数组时,Csharp ...

  5. jquery解析php通过ajax传过来的json二维数组对象

    ajax获得php传过来的json二维数组对象,jquery解析 php代码: <?php $news = array( '武汉'=>array(1,2,3), '广州'=>arra ...

  6. Array.prototype.sort()对数组对象排序的方法

    Array.prototype.sort()方法接受一个参数——Function,Function会提供两个参数,分别是两个进行比较的元素,如果元素是String类型则通过Unicode code进行 ...

  7. MVVM架构~knockoutjs系列之为Ajax传递Ko数组对象

    返回目录 一些要说的 这是一个很有意思的题目,在KO里,有对象和数组对象两种,但这两种对象对外表现都是一个function,如果希望得到他的值,需要进行函数式调用,如ko_a(),它的结果为一个具体值 ...

  8. 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

    [源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, con ...

  9. javascript数组对象排序

    javascript数组对象排序 JavaScript数组内置排序函数 javascript内置的sort函数是多种排序算法的集合 JavaScript实现多维数组.对象数组排序,其实用的就是原生的s ...

  10. JavaScript 中有关数组对象的方法

    JS 处理数组多种方法 js 中的数据类型分为两大类:原始类型和对象类型. 原始类型包括:数值.字符串.布尔值.null.undefined 对象类型包括:对象即是属性的集合,当然这里又两个特殊的对象 ...

随机推荐

  1. Java Exception和Error的差别

    Java中异常的抽象类是Throwable,在此基础上.派生出两大类:Error和Exception. Error是程序中的严重错误,不应该用try-catch包括.Javadoc的说明例如以下: A ...

  2. 开源企业IM-免费企业即时通讯-ENTBOOST V0.9版本号公布

    ENTBOOST V0.9版本号公布,更新内容:1.完好多人群组聊天,提高群组聊天性能及稳定性:2.苹果IOS SDK.添加联系人管理功能,优化API和内部流程.修复部分BUG.3.添加企业应用功能集 ...

  3. poj--1459--Power Network(最大流,超级源超级汇)

    Power Network Time Limit: 2000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit ...

  4. Google Summer of Code 2017 经验谈

    Google Summer of Code (GSoC) 2018 又要开始了. 如果想实现你心中的开源梦想, 用代码让世界变得更美好. 参加GSoC可能是你进入开源的世界最好途径. GSoC是什么 ...

  5. codeforces Gym100589H Count Subarrays 树状数组/线段树+离散化

    题意:给你一个数组,问你有多少子数组中的逆元数不小于K个,N<105 还在研究中

  6. android学习笔记五。2、其他组件

    一.ContentProvider内容提供者.是是android中一个应用向第三方共享数据的方式,android中的联系人,sms(短信记录)等都是通过这一方式来向外提供的 1.使用: 在应用中使用C ...

  7. MySql免安装版绿化版安装配置,附MySQL服务无法启动解决方案

    整理于:https://www.cnblogs.com/cenwei/p/6249856.html      我下载的MySQL版本是:mysql-5.6.15-winx64 一.解压文件 下载好My ...

  8. noip 2018 day1 T1 铺设道路 贪心

    Code: #include<cstdio> using namespace std; int main() { int last=0,ans=0; int n;scanf("% ...

  9. 浅述html5和web app

    题外话:最近跟不少产品解释技术术语,比如脚本.数据库.H5等等,我一般会把他们当成稍微了解这些技术的人,用专业的语言描述一遍,然后用通俗的语言解释一遍,最后举例子解释一遍. 肯定有人问,你把流程反过来 ...

  10. vue-cli · Failed to download repo vuejs-templates/webpack-simple: tunneling socket could not be established, cause=connect ECONNREFUSED 127.0.0.1:8086 && vue init webpack-simple xxx

    vue init webpack-simple mywork报错如下: vue-cli · Failed to download repo vuejs-templates/webpack-simple ...