数组方法

            //定义一个测试数组
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-840-Magic Squares In Grid

    题目描述: A 3 x 3 magic square is a 3 x 3 grid filled with distinct numbers from 1 to 9 such that each r ...

  2. ArrayList集合与List与数组的区别

    import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.Lis ...

  3. HDU 4508 湫湫系列故事——减肥记I

    原题链接:点击此处 解题思路: 思路与01背包差不多,思路用二维数组表示: dp[i][v]=max{dp[i-1][v-k*b[i]]+k*a[i]|0<=k*b[i]<=v} 其dp( ...

  4. 图像的上采样(upsampling)与下采样(subsampled)

    缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1.使得图像符合显示区域的大小:2.生成对应图像的缩略图. 放大图像(或称为上采样(upsampli ...

  5. [Re:从零开始的分布式] 0.x——分布式基础概念

    分布式的特点 1. 分布式 2. 对等性 3. 并发性 4. 缺乏全局时钟 5. 故障总是会发生 分布式环境的问题 1. 网络不可靠 2. 网络分区 3. 节点故障 CAP理论 一致性 可用性 分区容 ...

  6. 【数据库】:关于DB2数据库错误提示说明

    SQLSTATE 消息 本节列示 SQLSTATE 及其含义.SQLSTATE 是按类代码进行分组的:对于子代码,请参阅相应的表. 表 2. SQLSTATE 类代码类 代码 含义 要获得子代码, 参 ...

  7. Prufer序列与树的计数(坑)

    \(prufer\)序列: 无根树转\(prufer\)序列: 不断找编号最小的叶子节点,删掉并在序列中加入他相连的节点. \(prufer\)转无根树: 找到在目前\(prufer\)序列中未出现且 ...

  8. Sublime Text 3插件收集

    0.Package Control 这个是必须装的,就不多解释了 1.ConvertToUTF8 支持 GBK, BIG5, EUC-KR, EUC-JP, Shift_JIS 等编码的插件. 2.B ...

  9. (转)多种方法实现Loading(加载)动画效果

    当我们ajax提交一个按钮的时候,给那个按钮来个Loading效果会高端很多,体验也会上升个层次. 既能让用户知道正在提交中,也能防止二次提交,好处多多呢.

  10. mix使用本地依赖

    在看elixir程序设计,书中讲到依赖设置,但是都是要联网,自己希望可以下载到本地电脑硬盘,然后项目要使用就用本地的,不要每次都要下载,因为天朝下载真的不稳 官方看到文档 {:deps_name,pa ...