创建数组对象

var colors = new Array(); //创建新数组
var num = new Array(3); //创建包含三项的新数组
var names = new Array("Dalu"); // 创建包含一项数据“Dalu”的新数组

检测数据类型是否为数组

if(Array.isArray(value)){
// ECMAscript5新增
// 是数组
}; if(value instanceof Array){
// 是数组
}

转换数组为String类型四种方法

toString():由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。

valueOf():同上。

toLocaleString():和toString()返回结果基本相同,调用的是每一项的toLocale- String()方法。

join():可自定义分隔符

代码示例:

var nums = [1,2,3];
alert(nums.toString()); // ”1,2,3”
alert(nums.join(’||’); // “1||2||3”

* 如果数组中的某一项的值是null或者undefined,那么该值在上述方法返回的结果中以空字符串表示。

数组排序

栈和队列

push():在数组最后插入数据,可以是一个或多个。

pop():获取数组最后一项的值。

shift():移除数组中的第一个项并返回该项 ,同时将数组长度减 1 。

unshift():在数组前端添加任意个项并返回新数组的长度 。同时使用unshift()和pop()方法,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项。

重排序

reverse():反转数组项的顺序。

sort():调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序。即使数组中的每一项都是数值,sort()方法比较的也是字符串。sort()方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。

代码示例:

// 栈方法
var colors = new Array();
var count = colors.push("red","green"); //在最后面推入两项
console.log(colors); //["red","green"]
console.log(count); //计数为2 count = colors.push("black"); //在最后面推入另一项
console.log(count); // var item = colors.shift(); //移除数组中的第一个项并返回该项
console.log(item); //"red"
console.log(colors.length); //
// 队列方法

var colors = new Array();
var count = colors.unshift("red","green"); //在最前面推入两项
console.log(count); // count = colors.unshift("black"); //在最前面推入另一项
console.log(count); // var item = colors.pop(); //移除数组中的最后一项并返回该项
console.log(item); //"green"
console.log(corlors.length); //
// reverse() 反转数组项的顺序

var values = [1,2,3,4,5];
values.reverse();
console.log(values); // [5,4,3,2,1]
// sort() 调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序
var values = [0,1,5,10,15];
values.sort();
console.log(values); // [0,1,10,15,5] // sort()方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。
/* 比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个之后则返回一个正数。以下就是一个简单的比较函数:*/
// 升序
function compare(value1,value2){
  if(value1 < value2){
    return -1;
  } else if(value1 > value2){
    return 1;
  } else {
    return 0;
  }
}
var values = [0,1,5,10,15];
values.sort(compare);
console.log(values); // [0,1,5,10,15] // 降序
function compare(value1,value2){
  if(value1 < value2){
    return 1;
  } else if(value1 > value2){
    return -1;
  } else {
    return 0;
  }
}
var values = [0,1,5,10,15];
values.sort(compare);
console.log(values); // [15,10,5,1,0] /*对于数值类型或者其valueOf()方法会返回数值类型的对象类型,可以使用一个更简单的比较函数。这个函数只要用第二个值减第一个值即可*/
function compare(value1,value2){
  return value2 - value1;
}

操作方法

• concat():基于当前数组中的所有项创建一个新数组 。

具体来说 ,这个方法会先创建当前数组一个副本 ,然后将接收到的参数添加到这个副本的末尾 ,最后返回新构建的数组 。在没有给 c o n c a t ( )方法传递参数的情况下 ,它只是复制当前数组并返回副本 。如果传递给 c o n c a t ( )方法的是一或多个数组 ,则该方法会将这些数组中的每一项都添加到结果数组中 。如果传递的值不是数组 ,这些值就会被简单地添加到结果数组的末尾 。

• slice():基于当前数组中的一或多个项创建一个新数组 。

如果 s l i c e ( )方法的参数中有一个负数 ,则用数组长度加上该数来确定相应的位置 。例如 ,在一个包含 5项的数组上调用 s l i c e ( 2 , 1 )与调用 s l i c e ( 3 , 4 )得到的结果相同 。如果结束位置小于起始位置 ,则返回空数组 。

• splice():向数组的中部插入项,但使用这种方法的方式则有如下3种

删除:可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除的项数。例如,splice(0,2)会删除数组中的前两项。

插入:可以向指定位置插入任意数量的项,只需提供3个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。例如,splice(2,0,"red","green")会从当前数组的位置2开始插入字符串"red"和"green"。

替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。例如,splice(2,1,"red","green")会删除当前数组位置2的项,然后再从位置2开始插入字符串"red"和"green"。

代码示例:

// concat()
var colors = ["red","green","blue"];
var colors2 = colors.concat("yellow",["black","brown"]);
console.log("colors"); //["red","green","blue"]
console.log("colors2"); //["red","green","blue","yellow","black","brown"]
// slice()
var colors = ["red","green","blue","yellow","purole"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
console.log(colors2) //["green","blue","yellow","purole"]
console.log(colors3) //["green","blue","yellow"]
// splice()

var colors = ["red","green","blue"];
var removed = colors.splice(0,1); // 删除第一项
console.log(colors); //["green","blue"]
console.log(removed); //["red"],返回的数组只包含一项 removed = colors.splice(1,0,"yellow","orange"); //从位置1开始插入两项
console.log(colors); //["green","yellow","orange","blue"]
console.log(removed); //返回一个空数组[] removed = colors.splice(1,2,"red","purple"); //插入两项,删除两项
console.log(colors); //["green","red","purple","blue"]
console.log(removed); //["yellow","orange"],返回类型为Array,包含两项

位置方法

indexOf():从数组的开头 (位置 0 )开始向后查找

lastIndexOf():从数组的末尾开始向前查找 。

这两个方法都接收两个参数 :要查找的项和 (可选的 )表示查找起点位置的索引 。

这两个方法都返回要查找的项在数组中的位置 ,或者在没找到的情况下返回-1 。在比较第一个参数与数组中的每一项时 ,会使用全等操作符 ;

支持它们的浏览器包括IE9+、Firefox2+、Safari3+、Opera9.5+和Chrome。

代码示例:

// indexOf()

var numbers = [1,2,3,4,5,4,3,2,1];
console.log(numbers.indexOf(4)); //
console.log(numbers.lastIndexOf(4)); //
console.log(numbers.indexOf(4,4)); //
console.log(numbers.lastIndexOf(4,4)) // var person = {name:"Dalu"};
var people = [{name:"Dalu"}];
var morePeople = [person];
console.log(people.indexOf(person)); //-1
console.log(morePeople.indexOf(person)); //

迭代方法

every():对数组中的每一项运行给定函数,如果该函数对每一项都返回ture,则返回ture。

filter():对数组中的每一项运行给定函数,返回该函数会返回ture的项组成的数组 。

forEach():对数组中的每一项运行给定函数。这个方法没有返回值 。

map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组 。

some():对数组中的每一项运行给定函数,如果该函数对任一项返回ture ,则返回ture。

支持这些迭代方法的浏览器有IE9+、Firefox2+、Safari3+、Opera9.5+和Chrome。

代码示例:

// every()

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array){
return (item > 2);
});
console.log(everyResult); //false
var someResult = numbers.some(function(item,index,array){
return (item > 2);
});
console.log(someResult); //ture
// filter()

var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){
return (item > 2);
});
console.log(filterResult); //[3,4,5,4,3]
// map()

var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item,index,array){
return item * 2;
});
console.log(mapResult); //[2,4,6,8,10,8,6,4,2]
// forEach()

var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item,index,array){
console.log("item:" + item) //返回当前项的值
console.log("index:" + index) //返回当前项的索引
console.log("array:" + array) //返回数组的字符串1,2,3,4,5,4,3,2,1
});

缩小方法

reduce():迭代数组的所有项 ,然后构建一个最终返回的值 。正序。

reduceRight():迭代数组的所有项 ,然后构建一个最终返回的值 。倒序。

这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为缩小基础的初始值。传给reduce()和reduceRight()的函数接收4个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。

代码示例:

// reduce()

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
return prev + cur;
});
console.log(sum); //
// reduceRight() 倒序

var value = [1,2,3,4,5];
var sum = values.reduceRight(function(prev,cur,index,array){
return prve + cur;
});
console.log(sum); //15 由于都是累计相加,所以结果一样

Javascript 数组(Array)相关内容总结的更多相关文章

  1. Javascript数组Array的forEach方法

    Javascript数组Array的forEach扩展方法 forEach是最常用到的数组扩展方法之一,相当于参数化循环数组,它简单的在数组的每一个元素上应用传入的函数,这也意味着只有存在的元素会被访 ...

  2. JavaScript 数组(Array)对象的方法

    JavaScript 数组(Array)对象的方法 concat() 描述:用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 原型:arrayObject.conc ...

  3. JavaScript 数组(Array)方法汇总

    数组(Array)常用方法; 数组常用的方法:concat(),every(), filter(), forEach(),  indexOf(), join(), lastIndexOf(), map ...

  4. javascript数组Array强大的splice()方法

    javascript的Array数组提供了强大的splice()方法, 用于对数组元素的增删改 1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数) 删除: ...

  5. Javascript数组Array的方法总结!

    1.join() 将数组的元素组成一个字符串,以分隔符连接,如果省略则默认逗号为分隔符,该方法只接收一个参数:分隔符.此方法不会改变原数组. let arr = [1,2,3,4] let arr1 ...

  6. JavaScript 数组(Array)对象

    Array 对象 Array 对象用于在单个的变量中存储多个值. 创建 Array 对象的语法: new Array(); new Array(size); new Array(element0, e ...

  7. JavaScript 数组-Array的方法总结

    JavaScript中的Array类型是经常用到的,Array类型也提供了很多方法能实现我们需求,下面我们来总结一下 一.创建Array的方法 1.使用Array构造函数 var colors=new ...

  8. javascript数组array

    注意:1.array的length不是只读的.可以从数组的末尾移出项或者向数组中添加新项.看下面例子: var colors = ["red","yellow" ...

  9. 测试JavaScript数组Array

    <script> var numbers = [1, 2, 3, 4, 5]; function isLessThan3(value,index,array) { var returnVa ...

  10. JavaScript 数组(Array)方法(二)

    forEach ES5新增的方法,Arr.forEach((value, index,array)=>{}); let arr=['a','b','c']; arr.forEach((val,i ...

随机推荐

  1. C++数组做参数

    首先,看一下下面这段代码: void changearr(int a[],int n){    cout<<sizeof(a)<<endl;         // 输出4}in ...

  2. UWP Popup 弹出

    一:需求 做一个类似于安卓的弹出消息框,如图.当用户点击下载或者选择时,能够从底部弹出一个提示框,用于提示用户. 二:Popup 类 不需要我们自己额外去写一个弹窗类,微软自己有一个Popup 弹窗类 ...

  3. 走进 Visual Studio Mobile Center for Xamarin.Forms

    前几篇分别介绍了 Xamarin.Forms 的 MVVM 的 Prism,UITest,Nuint Test,那这样算下来,代码部分基本结构都有了(逻辑就先忽略吧) 那接下来就应该是自动 Build ...

  4. 我的Spring学习记录(五)

    在我的Spring学习记录(四)中使用了注解的方式对前面三篇做了总结.而这次,使用了用户登录及注册来对于本人前面四篇做一个应用案例,希望通过这个来对于我们的Spring的使用有一定的了解. 1. 程序 ...

  5. NTP时间服务器 搭建

    1.1 NTP简介 NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议.它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达 ...

  6. AngularJS学习篇(二十三)

    AngularJS 路由 AngularJS 路由允许我们通过不同的 URL 访问不同的内容. 通过 AngularJS 可以实现多视图的单页Web应用(single page web applica ...

  7. 【机器学习实战】第13章 利用 PCA 来简化数据

    第13章 利用 PCA 来简化数据 降维技术 场景 我们正通过电视观看体育比赛,在电视的显示器上有一个球. 显示器大概包含了100万像素点,而球则可能是由较少的像素点组成,例如说一千个像素点. 人们实 ...

  8. 阿里云centos 搭建SVN

    1. 安装 先进入想安装的目录,执行 yum install subversion 2. 创建SVN目录 mkdir -p /var/svn/svnrepos  ,然后创建版本库 svnadmin c ...

  9. 实现基于Keepalived高可用集群网站架构的多种方法

    实现基于Keepalived高可用集群网站架构 随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展,后端节点已 ...

  10. net core 使用tagHelper将 enum枚举类型转换为下拉列表select

    [HtmlTargetElement("enums")] //[HtmlTargetElement("enums", TagStructure = TagStr ...