JavaScript数组循环

一、前言

利用Javascript map(),reduce()和filter()数组方法可以遍历数组。而不是积累起来for循环和嵌套来处理列表和集合中的数据,利用这些方法可以更好地将逻辑组织成功能的构建块,然后将它们链接起来以创建更可读和更易于理解的实现。ES6也提供了一些更好的数组方法,比如.find,.findIndex,.of和for..of循环。

二、具体实现

1.数组循环

var officers = [s

{ id: 20, name: 'Captain' },

{ id: 24, name: 'General' },

{ id: 56, name: 'Admiral' },

{ id: 88, name: 'Commander' }

];

2.for循环,使用率最高,也是最基本的一种遍历方式

var officersIds = [];

for(var i=0,len=officers.length;i<len; i++){

officersIds.push(officers[i].id);

}

console.log(officersIds); // [20,24,56,88]

3.forEach循环

forEach中传入要执行的回调函数,函数有三个参数。第一个参数为数组元素(必选),第二个参数为数组元素索引值(可选),第三个参数为数组本身(可选)

var officersIds = [];

officers.forEach(function (officer,index,array) {

console.log(index); //0,1,2,3,

console.log(officer); //{id: 20, name: "Captain Piett"},{id: 24, name: "General Veers"},{id: 56, name: "Admiral Ozzel"},{id: 88, name: "Commander Jerjerrod"}

officersIds.push(officer.id);

});

console.log(officersIds); //[20,24,56,88]

4.for in循环

for...in循环可用于循环对象和数组,推荐用于循环对象,可以用来遍历JSON

var officersIds = [];

for(var key in officers){

console.log(key); // 0 1 2 3 返回数组索引

console.log(officers[key]); //{id: 20, name: "Captain Piett"},{id: 24, name: "General Veers"},{id: 56, name: "Admiral Ozzel"},{id: 88, name: "Commander Jerjerrod"}

officersIds.push(officers[key].id);

}

console.log(officersIds); //[20,24,56,88]

5.for of循环

可循环数组和对象,推荐用于遍历数组。

for...of提供了三个新方法:

key()是对键名的遍历;

value()是对键值的遍历;

entries()是对键值对的遍历;

let arr = ['科大讯飞', '政法BG', '前端开发'];

for (let item of arr) {

console.log(item); //  科大讯飞  政法BG  前端开发

}

// 输出数组索引

for (let item of arr.keys()) {

console.log(item);  // 0 1 2

}

// 输出内容和索引

for (let [item, val] of arr.entries()) {

console.log(item + ':' + val); //  0:科大讯飞  1:政法BG  2:前端开发

}

var officersIds = [];

for (var item of officers) {

console.log(item); //{id: 20, name: "Captain Piett"},{id: 24, name: "General Veers"},{id: 56, name: "Admiral Ozzel"},{id: 88, name: "Commander Jerjerrod"}

officersIds.push(item.id);

}

console.log(officersIds); // [20,24,56,88]

// 输出数组索引

for(var item of officers.keys()){

console.log(item); // 0 1 2 3

}

// 输出内容和索引

for (let [item, val] of officers.entries()) {

console.log(item) // 0 1 2 3 输出数组索引

console.log(val);//{id: 20, name: "Captain Piett"},{id: 24, name: "General Veers"},{id: 56, name: "Admiral Ozzel"},{id: 88, name: "Commander Jerjerrod"}

console.log(item + ':' + val);

}

6.map循环

map() 会返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

map 不修改调用它的原数组本身。

map()中传入要执行的回调函数,函数有三个参数。第一个参数为数组元素(必选),第二个参数为数组元素索引值(可选),第三个参数为数组本身(可选)

var arr = [

{name:'a',age:'18'},

{name:'b',age:'19'},

{name:'c',age:'20'}

];

arr.map(function(item,index) {

if(item.name == 'b') {

console.log(index)  // 1

}

})

7.filter

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

array.filter(function(currentValue,index,arr){

}, thisValue)

var designer = peoples.filter(function (people) {

return people.job === "designer";

});

组合使用

var totalScore = peoples

.filter(function (person) {

return person.isForceUser;

})

.map(function (choose) {

return choose.mathScore + choose.englishScore;

})

.reduce(function (total, score) {

return total + score;

}, 0);

Array.from()

var divs = document.querySelectorAll('div.pane');

var text = Array.from(divs, (d) => d.textContent);

console.log("div text:", text);

// Old, ES5 way to get array from arguments

function() {

var args = [].slice.call(arguments);

//...

}

// Using ES6 Array.from

function() {

var args = Array.from(arguments);

//..

}

var filled = Array.from([1,,2,,3], (n) => n || 0);

console.log("filled:", filled);

// => [1,0,2,0,3]

JavaScript数组循环的更多相关文章

  1. 手写js代码(一)javascript数组循环遍历之forEach

    注:原文地址http://blog.csdn.net/oscar999/article/details/8671546 我这里是仿照学习! 1.js的数组循环遍历 ①数组的遍历首先想到的是for()循 ...

  2. JavaScript数组循环遍历之forEach

    1.  js 数组循环遍历. 数组循环变量,最先想到的就是 for(var i=0;i<count;i++)这样的方式了. 除此之外,也可以使用较简便的forEach 方式 2.  forEac ...

  3. javaScript数组循环删除

    遍历数组循环的时候,限定条件不要写arr.length,因为数组的长度会随着删除元素的同时减小. 例如,一个原本长度为10的数组,如果采用 for(var i = 0; i< arr.lengt ...

  4. Javascript 数组循环遍历之forEach

    1.  js 数组循环遍历. 数组循环变量,最先想到的就是 for(var i=0;i<count;i++)这样的方式了. 除此之外,也可以使用较简便的forEach 方式   2.  forE ...

  5. JavaScript 基础数组循环和迭代的几种方法

    JavaScript 数组循环和迭代   (之前一直没怎么注意数组循环,今天做一道题时,用到forEach循环发现它并没有按照我想象的样子执行,总结一下数组循环) 一.第一种方法就是for()循环   ...

  6. JavaScript数组forEach循环

    JavaScript数组forEach循环 今天写JavaScript代码把forEach循环数组忘记写法了,在此记录一下以防止未来忘记. let a = [1, 2, 3]; a.forEach(f ...

  7. Javascript数组操作

    使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...

  8. 也谈面试必备问题之 JavaScript 数组去重

    Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...

  9. javascript数组的知识点讲解

    javascript数组的知识点讲解 阅读目录 数组的基本方法如下 concat() join() pop() push() reverse() shift() sort() splice() toS ...

随机推荐

  1. jQuery九宫格抽奖

    <div id="box"> <div class="content content-1">1</div> <div ...

  2. 《手把手教你》系列进阶篇之1-python+ selenium自动化测试 - python基础扫盲(详细教程)

    1. 简介 如果你从一开始就跟着宏哥看博客文章到这里,基础篇和练习篇的文章.如果你认真看过,并且手动去敲过每一篇的脚本代码,那边恭喜你,至少说你算真正会利用Python+Selenium编写自动化脚本 ...

  3. JWT攻击手册:如何入侵你的Token

    JSON Web Token(JWT)对于渗透测试人员而言,可能是一个非常吸引人的攻击途径.因为它不仅可以让你伪造任意用户获得无限的访问权限,而且还可能进一步发现更多的安全漏洞,如信息泄露,越权访问, ...

  4. IO 文件夹的拷贝

    package FileCopy; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...

  5. BZOJ 3033 太鼓达人(DFS+欧拉回路)

    Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和ly ...

  6. ansible批量管理常见的配置方法

    第7章 ansible的管理 7.1 ansible概念的介绍 ansible-playbook –syntax            检查语法 ansible-playbook -C         ...

  7. Java并发编程系列-(2) 线程的并发工具类

    2.线程的并发工具类 2.1 Fork-Join JDK 7中引入了fork-join框架,专门来解决计算密集型的任务.可以将一个大任务,拆分成若干个小任务,如下图所示: Fork-Join框架利用了 ...

  8. cmake 简介

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的 ...

  9. 使用 defineProperty 劫持数据属性的改变

    使用defineProperty劫持数据属性的变化 例子一:有一个全局变量a,有一个全局函数b,实现一个`bindData`,执行后,a的任何赋值都会触发b的执行 // var a = 1;a = 1 ...

  10. jqurey(尺寸,css操作,效果,遍历)

    尺寸: height():设置或返回元素的高度(不包括内边距.边框或外边距). width():设置或返回元素的宽度(不包括内边距.边框或外边距). 例如: $("#box").h ...