数组方法

            //定义一个测试数组
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. QuantLib 金融计算——随机过程之 Heston 过程

    目录 QuantLib 金融计算--随机过程之 Heston 过程 Heston 过程 参考文献 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--随机过程之 H ...

  2. (C/C++) string / *char / int 基本轉換

    網路上有許 string / *char / integer 基本轉換方式 string 與 *char 互相轉換的方法 /* string to *char */ string ssbuf1 = & ...

  3. Camera Sensor

    camera sensor分为YUV sensor和Bayer sensor. YUV Sensor YUV Sensor输出的格式是YUV,图像的处理效果使用sensor内部的ISP,BB端接收到的 ...

  4. 11种绕过CDN查找真实IP方法

    0x01 验证是否存在CDN 方法1: 很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有: http://ping.chin ...

  5. logrotate运行时间指定

    Edit in /etc/crontab the line that says 25 6 * * * root test -x /usr/sbin/anacron || ( cd / &&am ...

  6. Go语言指针

    指针简介 (Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值.由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元.因此,将 ...

  7. Codeforces Global Round 2 部分题解

    F.Niyaz and Small Degrees 挺sb的一题,为什么比赛时只过了4个呢 考虑当\(x\)固定的时候怎么做.显然可以树形DP:设\(f_{u,i=0/1}\)表示只考虑\(u\)子树 ...

  8. [转]分布式锁-RedisLockRegistry源码分析

    前言 官网的英文介绍大概如下: Starting with version 4.0, the RedisLockRegistry is available. Certain components (f ...

  9. com.alibaba.dubbo.rpc.RpcException: Failed to invoke remote method解决方法

    报错日记: Caused by: com.alibaba.dubbo.rpc.RpcException: Failed to invoke remote method: getUserAuthLeve ...

  10. 关于js语法(运算中出现无限大的问题)本身的错误的解决方案

    错误原因: 一是 JavaScript 浮点数计算的 Bug, 另一个是和计算机最终转换成二进制计算有关系 解决方案: 第一种就是利用JavaScript 的toFixed(n) 方法,直接获取N 位 ...