为什么80%的码农都做不了架构师?>>>

1.数组长度

//lenth会自动更新
var arr=["black","red","green"];
console.log(arr);//["black", "red", "green"]
arr[99]="white";
console.log(arr);//["black", "red", "green", 99: "white"]
console.log(arr.length);//100

2.判断是否是数组(3种方法)

//typeof一般检测基本数据类型的值,instanceof检测引用类型的值
var arr=["black","red","green"];
console.log(typeof (arr));//object
console.log(arr instanceof Array);//true
//instanceof只适用于单一的全局执行环境
//isArray()不在意数组是在哪个全局执行环境中创建的,但IE9+才支持
var arr=["black","red","green"];
console.log(Array.isArray(arr));//true
//IE9以下
var arr=["black","red","green"];
var isArray=Object.prototype.toString.call(arr);
console.log(isArray);//[object Array]
console.log(isArray == "[object Array]");//true

3.数组转换为字符串(2种方法)

//toString()
var arr=["black","red","green"];console.log(arr.toString());//black,red,green
//join()
var arr=["black","red","green"];
console.log(arr.join(","));//black,red,green

4.栈方法和队列方法

//栈方法 push()、pop()
var arr=["black","red","green"];
arr.push("yellow");
console.log(arr);   //["black", "red", "green", "yellow"]
var item=arr.pop(); // 删除最后一项
console.log(item);  // 后进先出,yellow
console.log(arr);   //["black", "red", "green"]
//队列 push()、shift() 先进后出
//unshift()、pop()反向模拟队列,数组前端添加(unshift())项、数组末端删除(pop())项。

5.reverse()反转数组

var arr=["black","red","green"];
console.log(arr.reverse());//["green", "red", "black"]

6.sort()方法排序

//sort()方法比较的是字符串
var arr=[1,12,5,20,3];
console.log(arr.sort());//[1, 12, 20, 3, 5]
//sort()正确的调用方式
var arr=[1,12,5,20,3];
function compare(value1,value2){if(value1>value2)  {return 1;}else if(value1<value2)  {return -1;}else  {return 0;}}
console.log(arr.sort(compare));//[1, 3, 5, 12, 20]
//更精简版本
var arr=[1,12,5,20,3];
function s(arr){return arr.sort(function(a, b){return a - b;});}
console.log(s(arr));//[1, 3, 5, 12, 20]

7.concat()方法,连接两个或多个数组

var arr1=[1,2,3,4];
var arr2=["a","b","c"];
arr1=arr1.concat(arr2);
console.log(arr1);//[1, 2, 3, 4, "a", "b", "c"]

8.splice()方法,删、增、替换数组中的项

//splice()删除数组中的某些项
//arr.splice(startLocation,itemNum);
//startLocation:要删除的第一项的位置,itemNum:要删除的项数
var arr=["a","b","c","d","e"];
var deleteData=arr.splice(0,2);//删除了前2个元素
console.log(deleteData);//删除了的元素:["a", "b"]
console.log(arr);//["c", "d", "e"]
//splice()增加数组中的某些项
//arr.splice(insertLocation,deleteIndex,"item","item2","...");
//insertLocation:起始位置,deleteIndex要删除的元素,设为0,item:要插入的元素
var arr=["a","b","c","d","e"];
deleteData=arr.splice(1,0,"f","g");//在arr[1](b)位置开始插入"f","g",不删除任何一个元素
console.log(deleteData);//[]因为未删除任何元素
console.log(arr);//["a", "f", "g", "b", "c", "d", "e"]
//splice()增加数组中的某些项
var arr=["a","b","c","d","e"];
deleteData=arr.splice(1,1,"f");//将b替换为f
console.log(deleteData);//["b"]
console.log(arr);//["a", "f", "c", "d", "e"]

9.迭代方法:every(),filter(),forEach(),map(),some()

//every()
var numbers=[1,2,3,4,5,6,7,8,9,0];
var everyResult=numbers.every(function(item,index,array){return item > 0;//every(),每一项为true,才返回true});
console.log(everyResult);//false
//some()
var someResult=numbers.some(function(item,index,array){return item > 0;//some(),任何一项为true,就返回true});
console.log(someResult);//true
//filter()
var filterResult=numbers.filter(function(item,index,array){return item > 0;//filter(),返回为true的数组});console.log(filterResult);//[1, 2, 3, 4, 5, 6, 7, 8, 9]
//map()
var mapResult=numbers.map(function(item,index,array){return item*2;//map(),返回调用结果组成的数组});
console.log(mapResult);//[2, 4, 6, 8, 10, 12, 14, 16, 18, 0]
//forEach()
numbers.forEach(function(item,index,array){item=item*2;//forEach(),类似for循环console.log(item);});

10.缩小方法,reduce()和reduceRight()

//reduce():迭代数组中的所有项,然后构建一个最终返回的值
//reduceRight():作用同上,但是reduceRight()从数组尾部开始进行
var values=[1,2,3,4,5];
var reduceResult=values.reduce(function(pre,cur,index,array){return pre+cur;});
console.log(reduceResult);//15

转载于:https://my.oschina.net/AnymoreCoder/blog/761743

JavaScript高级程序设计读书笔记(第5章引用类型之Array类型)相关推荐

  1. javascript高级程序设计学笔记——第五章 引用类型

    对象是某个特定引用类型的实例:新对象是使用new操作符后跟构造函数来创建的,构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而存在的: 一.Object类型 创建Object实例的方式有两 ...

  2. JavaScript高级程序设计读书笔记(第8章BOM之location对象查询字符串参数)

    为什么80%的码农都做不了架构师?>>> location对象查询字符串参数 //location.search返回从问号到URL末尾的所有内容function getQuerySt ...

  3. JavaScript高级程序设计读书笔记(第6章面向对象的程序设计之创建对象)

    2019独角兽企业重金招聘Python工程师标准>>> 面向对象语言都有"类"的概念,而通过类可以创建任意多个具有相同属性和方法的对象. JS中没有"类 ...

  4. javascript高级程序设计 学习笔记 第五章 上

      第五章   引用类型的值(对象)是引用类型的一个实例.在 ECMAScript 中,引用类型是一种数据结构, 用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管 ECMAScri ...

  5. javascript高级程序设计读书笔记----引用类型

    Array类型. ECMAScript数组的每一项可以保存任何类型的数据. 数组大小是可以动态调整的. 创建数组第一种基本方式方式: 使用Array构造函数 var colors = new Arra ...

  6. JavaScript高级程序设计-读书笔记(6)

    第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JS ...

  7. 《JavaScript 高级程序设计》笔记 第7章及以后

    第7章 函数表达式 匿名函数的name属性是空字符串: 闭包是函数:闭包是有权访问另一个函数作用域中变量的函数:(P181 副作用,解释了点击li弹出循环最后值的原因) 当某个函数第一次被调用时,会创 ...

  8. 重学《JavaScript 高级程序设计》笔记 第6章对象

    第6章 面向对象的程序设计 ECMAScript中没有类的概念: 1.创建对象-历史 1.1 创建实例,添加方法和属性 → 对象字面量 缺点: 使用同一接口创建很多对象,产生大量重复代码 var pe ...

  9. JavaScript高级程序设计读书笔记(一)

    第一章 总结: JavaScript是一种专为与网页交互设计的脚本语言. 由三个不同的部分组成: ECMAScript, 由ECMA-262定义,提供核心语言功能: DOM(文件对象模型),提供访问和 ...

最新文章

  1. stream map方法_Java Stream中map和flatMap方法
  2. VMware上安装ubuntu 13.04
  3. 《超越平凡的平面设计: 版式设计原理与应用》—色轮
  4. 指南--安装带GTK前端的 F-Prot(杀毒)
  5. 谈谈 Delphi 的类型与指针[2]
  6. 谈谈主策划需要的能力
  7. Python函数参数的值传递机制
  8. dg修改归档目录 oracle_OracleDG主库丢失归档增量同步
  9. 阿里云李飞飞领衔撰写,云原生数据库教材
  10. 密码库LibTomCrypt学习记录——(2)分组密码算法的工作模式
  11. iptv错误代码2003什么意思_IPTV部分错误代码和原因解释
  12. 桥接模式与路由模式有什么不同
  13. 计算机无法关机 总是自动启动,告诉你win10电脑关机后自动开机怎么解决
  14. 魔兽世界怀旧服务器无限刷怪点,魔兽世界怀旧服:4处无限刷新的打怪点!升级比血色站桩还快!...
  15. linux源码阅读神器,Ubuntu下安装LXR Linux源代码阅读利器
  16. CSUOJ1238--兵临城下
  17. 问卷中多选题该怎么分析?
  18. WindowsPhone8常见问题及使用技巧
  19. 基于hi3531、ffmpeg、x264的h264压缩
  20. 27-什么是自旋锁?自旋的好处和后果是什么呢?

热门文章

  1. BayaiM__SQLLDR_linux_shell高级版
  2. 组合数学练习题(二)——Chemist
  3. .net跨防火墙链接oracle连接池链接长时间无通讯数据被断开后报错问题解决
  4. 编程求以孩子兄弟表示法存储的森林的叶子结点数☆
  5. 诗与远方:无题(十二)
  6. JS格式化时间之后少了8个小时
  7. python去重复记录_python如何处理重复值数据?
  8. Java fianl关键字的理解
  9. 阿尔伯塔大学的计算机科学专业好吗,去阿尔伯塔大学留学这些专业千万不能错过!...
  10. Cannot resolve xxxx(依赖名):unknown