zoukankan      html  css  js  c++  java
  • JavaScript数组循环

    JavaScript数组循环

    一、前言

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

  • 相关阅读:
    如何保证access_token长期有效
    微信自定义菜单的创建
    是否同一棵二叉搜索树
    Tree Traversals Again(根据前序,中序,确定后序顺序)
    List Leaves 树的层序遍历
    leetcode-优美的排列
    leetcode-下一个排列
    leetcode-二进制手表
    leetcode-组合总数III(回溯)
    leetcode-累加数(C++)
  • 原文地址:https://www.cnblogs.com/lufeibin/p/12080194.html
Copyright © 2011-2022 走看看