数组方法

            //定义一个测试数组
var array1 = [1,2,5,null,"a"]; //join()方法是String.split()方法的逆操作,后者是将字符串分割成若干块来创建一个数组。
console.log(array1.join(",")); // 1,2,5,,a //返回逆序的数组,不改变原数组,原理是替换(意思是不是重新排列元素创建新的数组,而是在原先的数组中重新排列元素)
console.log(array1.reverse()); // ["a",null,5,2,1]
array1.reverse();
console.log(array1); // [1,2,5,null,"a"] 原数组不变 //将数组的元素排序并返回排序后的数组。改变原数组。
console.log(array1.sort()); // [1,2,5,"a",null]
array1.sort(function(a,b){
return a-b;
});
console.log(array1); // [1,2,5,"a",null] 原数组为排序后的数组
//针对数组元素全是字符串 不区分大小写的排序
var array2 = ["a","C","dog","case","Dog"];
console.log(array2.sort()); //["C", "Dog", "a", "case", "dog"] 区分大小写
array2.sort(function(s,t){
var a = s.toLowerCase();
var b = t.toLowerCase();
if(a<b) return -1;
if(a>b) return 1;
return 0;
});
console.log(array2);// ["a", "C", "case", "Dog", "dog"] 不区分大小写 //concat()创建并返回一个新数组 ,原数组不变
console.log(array1.concat([4,6],7,[8,[9,10]]));
console.log(array1); //不改变原数组 [1,2,5,"a",null] //截取数组元素,返回截取元素组成的数组。原数组不变
console.log(array1.slice(1,3)); //[2,5]
console.log(array1.slice(1,-1)); //[2, 5, "a"]
console.log(array1); //[1, 2, 5, "a", null] //插入 删除 修改数组。返回由删除元素组成的数组。 并改变原数组
console.log(array1.splice(1,3)); //[2,5,"a"]
console.log(array1); //[1,null]
console.log(array1.splice(0,2,"b","c")); // 返回删除的 [1,null]
console.log(array1); // ["b","c"] console.log(array1.push("d")); //3 返回的数组的 长度 改变原数组
console.log(array1.pop()); // d 返回删除的的元素 String 改变原数组
console.log(array1.unshift("a")); // 3 返回数组的长度 改变原数组
console.log(array1.shift()); // a 返回删除的的元素 String 改变原数组
console.log(array1.toString());
console.log(array1.toLocaleString()); //ECMAScript5数组中的方法
var data=[1,2,3,4,5];
var sum=0;
data.forEach(function(value){sum+=value});
console.log(sum); //
data.forEach(function(v,i,a){return a[i]=v+1})
console.log(data); //[2,3,4,5,6]
var data1=data.map(function(x){return x*x});//map()方法将调用数组的每个元素,传递给指定函数,返回一个新数组
console.log(data1); //[4,9,16,25,36]
var data2=data.filter(function(x){return x<4});
console.log(data2); //[2,3]
var data3=data.filter(function(x){return x%2==0}); //获取偶数元素
console.log(data3);//[2,4,6]
var data4=data.filter(function(x,i){return i%2!=0}); //获取下标为单数的的元素
console.log(data4);//[3,5]
var bool1=data.every(function(x) {return x<5}); //所有的值都小于5吗?
var bool2=data.some(function(x){return x>5}); //有大于5的值吗吗?
console.log(bool1+" "+bool2);
var num1 = data.reduce(function(x,y){ return x+y},0);
var num2 = data.reduce(function(x,y){ return x*y},1);
var num3 = data.reduce(function(x,y){ return (x>y)?x:y});
console.log(num1+" "+num2+" "+num3);
var num4=data.indexOf(2);
var num5 = data.lastIndexOf(3);
var num6 = data.indexOf(9);
console.log(num4); //indexOf()方法返回的是值得下标
console.log(num5);
console.log(num6); //不存在返回-1,可以判断数组中是否含有某个元素 //在数组中查找所有x,并返回索引下标
function findx(a,x){
var result = [],len=a.length,pos=0;
while(pos<len){
pos= a.indexOf(x,pos);
if(pos===-1) break;
result.push(pos);
pos += 1;
}
return result;
}
var findxArray = [1,2,3,4,1,5,1];
console.log(findx(findxArray,1));

数组类型

            console.log(Array.isArray(data));  //ECMAScript5中检测是否为数组的方法
//自定义检测数组方法,实际上是实现isArray方法
var isArray = Function.isArray || function(o){
return (typeof o)==="object" && Object.prototype.toString.call(o) ==="[object Array]";
}
console.log(isArray(data));

类数组对象:函数的Arguments对象实际上是一个类数组对象,document.getElementsByTagName()也返回一个类数组对象

作为数组的字符串:字符串也有 str.charAt(0)  str[1];   

JavaScript的进阶之路(五)理解数组2的更多相关文章

  1. JavaScript的进阶之路(五)理解数组1

    数组是值得有序结合,每个值叫做一个元素,每个元素的位置称为索引,索引从0开始. 在JavaScript中,数组是对象的特殊形式.继承自Array.prototype中的属性,有丰富的数组操作方法. 通 ...

  2. JavaScript的进阶之路(六)理解函数

    函数:定义一次,多次调用:用于对象的属性则称为对象的方法:在JavaScript中,函数即对象:嵌套的函数形成闭包: 定义函数和简单调用函数: //函数定义 function f1(){ //没有参数 ...

  3. JavaScript的进阶之路(四)理解对象2

    对象的三个属性 原型属性 1.var v={}的原型是Object.prototype;继承了一个constructor属性指代Object()构造函数,实际的原型是constructor.proto ...

  4. JavaScript的进阶之路(四)理解对象1

    对象是JavaScript的基本数据类型.简单的名值对组成了对象,BUT:还可以从一个被称为原型的对象继承属性,对象的方法通常就是继承的属性. 对象最常见的用法有:创建.设置.查找.删除.检测.枚举它 ...

  5. JavaScript正则进阶之路——活学妙用奇淫正则表达式

    原文收录在我的 GitHub博客 (https://github.com/jawil/blog) ,喜欢的可以关注最新动态,大家一起多交流学习,共同进步,以学习者的身份写博客,记录点滴. 有些童鞋肯定 ...

  6. JavaScript的进阶之路(七)客户端JavaScript知识点总结

    一.客户端JavaScript主要是BOM DOM的操作和js脚本的兼容性.互用性.可访问性.安全性的应用.以及一些框架的引用. 二.BOM:浏览器对象模型 主要介绍window对象 1.定时器:se ...

  7. JavaScript的进阶之路(三)引用类型之Object类型和Array类型

    引用类型 Object类型 function a(num){ if(num>3){ a(--num); } console.log(num); } a(5); //如何创建对象的实例 var o ...

  8. JavaScript的进阶之路(一)

    JavaScript由ECMAScript BOM DOM三部分组成 ECMAScript重要版本1,3,5,6,提供核心语言功能 DOM提供访问和操作网页内容的方法和接口 BOM提供与浏览器交互的的 ...

  9. ASP.NET MVC进阶之路:深入理解依赖注入(DI)和控制反转(IOC)

    0X1 什么是依赖注入 依赖注入(Dependency Injection),是这样一个过程:某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点.在程序运行过程中,客户 ...

随机推荐

  1. leetcode-219-Contains Duplicate II(使用set来判断长度为k+1的闭区间中有没有重复元素)

    题目描述: Given an array of integers and an integer k, find out whether there are two distinct indices i ...

  2. Java8内存结构—永久代(PermGen)和元空间(Metaspace)

    本文转载 作者:liuxiaopeng 博客地址:https://www.cnblogs.com/paddix/p/5309550.html 一.JVM 内存结构 根据 JVM 规范,JVM 内存共分 ...

  3. 关于Vue中main.js,App.vue,index.html之间关系进行总结

    在初始化的Vue项目中,我们最先接触到的就是main.js,App.vue,index.html这三个文件,我们从培训视频或者官方文档上可以了解到: index.html---主页,项目入口 App. ...

  4. C基础《一》

    puts("第一个C语言程序输出了") C语言的编译和链接过程 C语言写的代码必须经过编译生成可执行文件才可以用, 编译就是把C语言写的代码进行识别,转换成计算机能够识别的二进制形 ...

  5. vue遇见better-scroll

    better-scroll better-scroll 是一款重点解决移动端(现已支持 PC 端)各种滚动场景需求的插件.它的核心是借鉴的 iscroll 的实现,它的 API 设计基本兼容 iscr ...

  6. AngularJS 的常用特性(四)

    11.使用 Module(模块) 组织依赖关系 Angular 里面的模板,提供了一种方法,可以用来组织应用中一块功能区域的依赖关系:同时还提供了一种机制,可以自动解析依赖关系(又叫依赖注入),一般来 ...

  7. Nginx教程(7) 正向代理与反向代理【总结】

    1.前言 最近工作中用到反向代理,发现网络代理的玩法还真不少,网络背后有很多需要去学习.而在此之前仅仅使用了过代理软件,曾经为了访问google,使用了代理软件,需要在浏览器中配置代理的地址.我只知道 ...

  8. ibatis插入正确但查询不出数据的问题

    现在,使用打印的sql在oracle数据库客户端能查询出结果,但执行ibatis查询语句不行,ibatis插入可以. 解决问题的历程: 1. 去掉sql中的where语句,仍然查找不到,确定不是sql ...

  9. Python制作回合制手游外挂简单教程(中)

    接着上篇的博文,今天我们讲如何实现自动组队刷道 引入: 自动组队刷道的流程是先点击刷道按钮.再点击前往按钮.再点击便捷组队······ 这些操作上篇博文已经告诉我们怎么做了,利用picpick丈量坐标 ...

  10. 数据库索引--------B/B+树、聚集、非聚集、符合索引

    摘录自博客:http://www.cnblogs.com/morvenhuang/archive/2009/03/30/1425534.html 一.引言 对数据库索引的关注从未淡出我的们的讨论,那么 ...