数组方法

            //定义一个测试数组
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-695-Max Area of Island(BFS)

    题目描述: Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land ...

  2. 51.RocketMQ 顺序消费

    大部分的员工早上的心情可能不会很好,因为这时想到还有很多事情要做,压力会大点,一般到下午4点左右,状态会是一天中最好的,因为这时大部分的工作做得差不多了,又快要下班了,当然也不是绝对.要注意记录各下属 ...

  3. 06-图2 Saving James Bond - Easy Version (25 分)

    This time let us consider the situation in the movie "Live and Let Die" in which James Bon ...

  4. CentOS7 安装 Adobe Flash 看网络视频

    登录 Adobe 网站,找到 Adobe Flash Player 下载页,进入后网页自动识别 Linux 环境,手动选择版本,选择 YUM 方式,自动下载一个 rpm 文件 定位到下载目录,通常默认 ...

  5. PHP-GD库开发手记

    创建带有alpha通道的背景输出图像画中文字体获取长宽等比例缩放图片,也可以用于裁切实例代码 创建带有alpha通道的背景 $png = imagecreatetruecolor(800, 600); ...

  6. spring boot快速入门 1 :创建项目、 三种启动项目方式

    准备工作: (转载)IDEA新建项目时,没有Spring Initializr选项 最近开始使用IDEA作为开发工具,然后也是打算开始学习使用spring boot. 看着博客来进行操作上手sprin ...

  7. php 使用 rabbitmq

    1,配置好rabbitmq 服务器 (参照 http://www.cnblogs.com/spicy/p/7017603.html)(我是linux) 2,新增了一个用户 并点击该用户 增加权限如下

  8. sizeof数组名和字符指针是有区别的

    sizeof数组名和字符指针是有区别的. #include <stdio.h> #include <stdlib.h> void change(char url[]); int ...

  9. 剑指offer(41-45)编程题

    41.入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. class Solution { public: vector&l ...

  10. *2.3.2_加入env

    在验证平台中加入reference model.scoreboard等之前,思考一个问题:假设这些组件已经定义好了,那么在验证平台的什么位置对它们进行实例化呢?在top_tb中使用run_test进行 ...