JavaScript常见集合操作


集合的遍历

FOR循环(效率最高)

  • 优点:JavaScript最普遍的for循环,执行效率最高
  • 缺点:无法遍历对象
for(let i=0;i<array.length,i++){
//operation
}

FOR…IN循环(效率较低)

  • 优点:唯一一个能够获取对象的属性名的遍历方式
  • 缺点:会将对象通过继承得到的属性一齐遍历,造成非预料的结果且效率较低
//会访问非继承的属性
for(attr in object){//attr作为属性名
//object[attr]访问值
}
//避免访问继承的属性
for(attr in object){//attr作为属性名
if(object.hasOwnProperty(attr)){
//object[attr]访问值
}
}

FOR…OF循环(效率较高)

  • 优点:能够快速访问非继承属性值
  • 缺点:需要ES6支持
for(item of object){
//item访问值
}

FOREACH方法(数组内置高阶方法,含义清晰)

  • 优点:函数式编程,简洁,快速领会代码含义
  • 缺点:无法对对象使用
array.forEach(function(item,index,array)){
//item为值
//index为索引
//array为被访问数组
};

TIPS:

  1. 在对对象进行遍历时,如不需要访问属性名选择for...of循环,如需访问属性名选择for...in循环
  2. 在对数组进行访问时,使用forEach得到较好的可读性,传统的for循环能够带来很高的性能及拓展性

集合的操作

提倡的想机器一样思考中,编程问题的解决被分为了输入,处理和输出

处理,是对输入数据的处理,就可以分为从输入的数据中提炼出一定的有价值的数据,并对他们做出一些操作,得到希望得到的有价值的东西,并将他输出

MAP映射

Map映射是将输入的数据中有价值的东西提取出来,转化为更有利于处理的格式

let dataAfterProcess = array.map(function(item,index,array){
//item为值
//index为索引
//array为被访问数组
return ;//返回dataAfterProcess中希望被添加的元素
});

REDUCE计算

Reduce计算以提取好的数据输入,并获得最终的一个结果

let output = array.reduce(function(accumulator, currentValue, currentIndex, array){
//accumulator为输出结果
//currentValue为遍历数组目前的值
//currentIndex为遍历数组目前的索引
//array为被访问数组
return ;//返回希望累加的操作
},0);//0为计算结果的初始值,默认为数组第一个元素

TODO

在完成JS练习中,我时常会遇到以下问题待解决:

  1. Map操作中,经常会遇到需要根据已有的目标数组的情况做出相应的映射操作,但目前尚未发现怎样在Map循环中检查已映射的目标数组?
  2. 为对象实现接口使对象也具有MapReduce操作的能力

JavaScript常见集合操作的更多相关文章

  1. javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)

    主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除 ...

  2. 第一百一十六节,JavaScript,DOM操作样式

    JavaScript,DOM操作样式 一.操作样式 CSS作为(X)HTML的辅助,可以增强页面的显示效果.但不是每个浏览器都能支持最新的CSS能力.CSS的能力和DOM级别密切相关,所以我们有必要检 ...

  3. JavaScript实现集合与字典

    JavaScript实现集合与字典 一.集合结构 1.1.简介 集合比较常见的实现方式是哈希表,这里使用JavaScript的Object类进行封装. 集合通常是由一组无序的.不能重复的元素构成. 数 ...

  4. 深度解析javaScript常见数据类型检查校验

    前言 在JavaScript中,数据类型分为两大类,一种是基础数据类型,另一种则是复杂数据类型,又叫引用数据类型 基础数据类型:数字Number 字符串String 布尔Boolean Null Un ...

  5. 第一百二十六节,JavaScript,XPath操作xml节点

    第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准 ...

  6. 第一百一十五节,JavaScript,DOM操作表格

    JavaScript,DOM操作表格 学习要点: 1.操作表格 DOM在操作生成HTML上,还是比较简明的.不过,由于浏览器总是存在兼容和陷阱,导致最终的操作就不是那么简单方便了.本章主要了解一下DO ...

  7. java中的集合操作类(未完待续)

    申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList ...

  8. 彻底理解Oracle中的集合操作与复合查询

    --Oracle中的复合查询 复合查询:包含集合运算(操作)的查询 常见的集合操作有: union: 两个查询的并集(无重复行.按第一个查询的第一列升序排序) union all:两个查询的并集(有重 ...

  9. mongo的runCommand与集合操作函数的关系

    除了特殊注释外,本文的测试结果均基于 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0 ...

随机推荐

  1. pybedtools --bedtools的python包

    http://daler.github.io/pybedtools/ 用个下面这个 >>> fn = pybedtools.example_filename('test.fa') & ...

  2. adb connect 192.168.1.10 failed to connect to 192.168.1.10:5555

    adb connect 192.168.1.10 输出 failed to connect to 关闭安卓端Wi-Fi,重新打开连接即可

  3. 五句话搞定JavaScript作用域【转】

    JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话,走遍天下都不怕... 一.“JavaScript中无块级作用域” 在Java或C# ...

  4. Angel 实现FFM 一、对于Angel 和分布式机器学习的简单了解

    Angel是腾讯开源的一个分布式机器学习框架.是一个PS模式的分布式机器学习框架. https://github.com/Angel-ML/angel   这是github地址. 我了解的分布式机器学 ...

  5. 递归--练习6--noi1755菲波那契数列

    递归--练习6--noi1755菲波那契数列 一.心得 二.题目 1755:菲波那契数列 总时间限制:  1000ms 内存限制:  65536kB 描述 菲波那契数列是指这样的数列: 数列的第一个和 ...

  6. UVALive-3989 Ladies' Choice (稳定婚姻问题)

    题目大意:稳定婚姻问题.... 题目分析:模板题. 代码如下: # include<iostream> # include<cstdio> # include<queue ...

  7. 深入理解javascript之typeof和instanceof

    1.https://blog.csdn.net/mevicky/article/details/50353881 (深入理解javascript之typeof和instanceof)

  8. 第11课 enum,sizeof,typedef分析

    枚举类型的使用方法: enum的地位和struct是相等的,enum主要用来根据需要定义一些离散的值. 枚举类型的特殊意义: 工程中常用无名枚举来定义常量. 程序示例: #include <st ...

  9. Properties集合小应用--限制用户对软件的使用次数

    我们可以注意到一些付费软件可以试用一定的次数,超过限制次数后,就必须到官网购买正版才能继续使用. 这里就简单地模拟一下这种效果的实现. * 需求:记录程序的启动次数,当启动次数超过3次后,要求使用者注 ...

  10. 20155236 2016-2017-2 《Java程序设计》第六周学习总结

    20155236 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 InputStream与OutputStream 从应用程序角度来看,如果要将数据从来源取出 ...