1、什么是数组--Array

数组就是一组数据的集合

其表现形式就是内存中的一段连续的内存地址

数组名称其实就是连续内存地址的首地址

2、关于js中的数组特点

数组定义时无需指定数据类型

数组定义时可以无需指定数组长度

数组可以存储任何数据类型的数据(比如说一个元素保存整型,一个元素保存字符串型,这个在JS中是可以的)

3、数组的创建

(一)使用 Array 构造函数:

 var arr1 = new Array(); //创建一个空数组
var arr2 = new Array(20); // 创建一个包含20项的数组
var arr3 = new Array("lily","lucy","Tom"); // 创建一个包含3个字符串的数组

(二)使用数组字面量表示法:

 var arr4 = []; //创建一个空数组
var arr5 = [20]; // 创建一个包含1项的数组
var arr6 = ["lily","lucy","Tom"]; // 创建一个包含3个字符串的数组

4、数组属性

属性 描述
constructor 返回创建数组对象的原型函数。
length 设置或返回数组元素的个数。
prototype 允许你向数组对象添加属性或方法。

1、constructor 

返回对创建此对象的数组函数的引用。

object.constructor //object是对象或函数的名称。

说明:constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。

 var test=new Array();

 if (test.constructor==Array)
{
document.write("This is an Array");
}
if (test.constructor==Boolean)
{
document.write("This is a Boolean");
}
if (test.constructor==Date)
{
document.write("This is a Date");
}
if (test.constructor==String)
{
document.write("This is a String");
}

2、length 

计算数组的长度

var arr = ["aaa","bbb"];
alert(arr.length);

5、数组对象方法

1、  concat() 连接两个或更多的数组,并返回结果。

把当前数组与另一个数组连接起来,并返回新的元素,原来的数组不被改变,concat可以接收任意个元素和数组,并把数组拆开放入新的数组中

//concat() 连接两个或更多的数组,并返回结果。
var arr = ["a","b","c"];
alert(arr.concat([1,2,3]));//数组arr不变,返回["a","b","c",1,2,3]
alert(arr.concat([1,2,[3,4]]));//返回["a","b","c",1,2,3,4]

2、 join() 方法用于把数组中的所有元素转换一个字符串。

join(separator): 将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符,该方法只接收一个参数:即分隔符。

 //join() 方法用于把数组中的所有元素转换一个字符串。
var arr = ["a","b","c"];
document.write(arr.join(",")+"<br />"); //返回a,b,c
document.write(arr.join(" and ")+"<br />");//返回a and b and c
document.write(arr.join("/")+"<hr />");//返回a/b/c

3、 pop() 数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。

 //pop() 删除数组末尾最后一个元素,返回被删除的元素,若数组为空则返回undefined
var arr = [1,2,3];
document.write(arr.pop()+"<br />");//返回被删除的元素3
var arr1 = [];
document.write(arr1.pop()+"<hr />");//返回undefined

4、push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

 //push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
var arr = [1,2];
document.write(arr.push('a','b')+"<br />");
document.write(arr+"<hr />");

5、shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

 //shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
var arr = [1,2,3];
document.write(arr + "<br />") //原本的
document.write(arr.shift() + "<br />")//返回头部被删除的项1
document.write(arr+"<hr />") //删除之后的

6、unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

             //unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
var arr = [1,2,3];
document.write(arr + "<br />"); //1,2,3
document.write(arr.unshift("a","b") + "<br />");//返回数组的长度5
document.write(arr+"<hr />"); //a,b,1,2,3

7、sort()方法用于对数组的元素进行排序。reverse() 方法用于颠倒数组中元素的顺序。

排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序。

注意:当数字是按字母顺序排列时"40"将排在"5"前面。
        使用数字排序,你必须通过一个函数作为参数来调用。
        函数指定数字是按照升序还是降序排列。

     //数字排序(数字和升序):
var arr = [40,100,1,5,25,10];
var x=arr.sort(function(a,b){return a-b})
document.write(x+"<br />");
//数字排序(数字和降序):
var arr = [40,100,1,5,25,10];
var x=arr.sort(function(a,b){return b-a})
document.write(x+"<br />");
//字母默认升序
var arr = ["b", "a", "d", "g"];
document.write(arr.sort()+"<br />"); //reverse() 方法用于颠倒数组中元素的顺序。
//字母默认降序
var arr = ["b", "a", "d", "g"];
document.write(arr.reverse());

8、slice() 选取数组的的一部分,并返回一个新数组。

语法:array.slice(start, end)  取头不取尾

属 性 描述
        start     必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
         var arr = [1,3,5,7,9,11];
var arrCopy = arr.slice(1);
var arrCopy2 = arr.slice(1,4);
var arrCopy3 = arr.slice(1,-2);
var arrCopy4 = arr.slice(-4,-1);
document.write(arr+"<br />"); //[1, 3, 5, 7, 9, 11](原数组没变)
document.write(arrCopy+"<br />"); //[3, 5, 7, 9, 11]
document.write(arrCopy2+"<br />"); //[3, 5, 7]
document.write(arrCopy3+"<br />"); //[3, 5, 7]
document.write(arrCopy4+"<hr />"); //[5, 7, 9]

arrCopy只设置了一个参数,也就是起始下标为1,所以返回的数组为下标1(包括下标1)开始到数组最后。 
arrCopy2设置了两个参数,返回起始下标(包括1)开始到终止下标(不包括4)的子数组。 
arrCopy3设置了两个参数,终止下标为负数,当出现负数时,将负数加上数组长度的值(6)来替换该位置的数,因此就是从1开始到4(不包括)的子数组。 
arrCopy4中两个参数都是负数,所以都加上数组长度6转换成正数,因此相当于slice(2,5)。

9、splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。用于插入、删除或替换数组的元素。

注意:这种方法会改变原始数组!

             var arr = ["a","b","c"];
document.write(arr.splice(1,2,"d","e")+"<br />");//从位置1开始删除2个元素,在1位置添加"d","e"两个元素,返回"b","c"
document.write(arr+"<br />");//arr数组变为a,d,e
document.write(arr.splice(0,3)+"<br />");//从位置0开始,删除3个元素,返回"a","d","e"
document.write(arr+"<hr />");//arr数组为空

10、indexOf():接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。

其中, 从数组的开头(位置 0)开始向后查找。 若元素不存在返回-1

11、lastIndexOf:接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。

其中, 从数组的末尾开始向前查找。若元素不存在返回-1

 var arr = [1,3,5,7,7,5,3,1];
document.write(arr.indexOf(5)+"<br />"); //
document.write(arr.lastIndexOf(5)+"<br />"); //
document.write(arr.indexOf(5,2)+"<br />"); //
document.write(arr.lastIndexOf(5,4)+"<br />"); //
document.write(arr.indexOf("5")+"<br />"); //-1

12、map() 指“映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

下面代码利用map方法实现数组中每个数求平方。

 var arr = [1, 2, 3, 4, 5]; document.write(arr.map(Math.sqrt)); //[1, 4, 9, 16, 25]

13、filter() “过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。

 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function check(age) {
    return age >= 6;
} document.write(check);
 

14、every():判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。

 var arr = [1, 2, 3, 4, 5];
var arr2 = arr.every(function(x) {
return x < 10;
});
document.write(arr2); //true
var arr3 = arr.every(function(x) {
return x < 3;
});
document.write(arr3); // false
 

15、some():判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。

 var arr = [1, 2, 3, 4, 5];
var arr2 = arr.some(function(x) {
return x < 3;
});
document.write(arr2); //true
var arr3 = arr.some(function(x) {
return x < 1;
});
document.write(arr3); // false
 

16、reduce()和 reduceRight()

这两个方法都会实现迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项。

这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。

传给 reduce()和 reduceRight()的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。

下面代码用reduce()实现数组求和,数组一开始加了一个初始值10。

 
 var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev, cur, index, array){
return prev + cur;
},10);
document.write(sum); //

17、toString() 该方法返回由数组中每个值的字符串以逗号分隔而拼接的字符串,数组的每一项调用的是toString

 var arr = [1,2];
document.write(arr.toString());//返回1,2

18、toLocaleString() 该方法返回一个数组值以逗号分隔的字符串,与toString不同的是数组的每一项调用的是toLocaleString

var arr = [1,2];
document.write(arr.toLocaleString());//返回1,2

【JavaScript数组】的更多相关文章

  1. Javascript数组操作

    使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...

  2. Javascript数组操作(转)

    1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...

  3. JavaScript 数组

    JavaScript 数组 简介:数组是值的有序集合,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改. 一:创建数组 ...

  4. 也谈面试必备问题之 JavaScript 数组去重

    Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...

  5. js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法

    var  questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...

  6. JavaScript 数组 length 属性获取数组长度或设置数组元素的数目

    JavaScript 数组 length 属性 JavaScript 数组 length 属性可返回或设置或组中元素的数目,语法如下: array_object.length 利用 length 属性 ...

  7. 【读书笔记】-- JavaScript数组

    数组是一段线性分配的内存,它通过整数计算偏移并访问其中的元素.大多数的语言都会要求一个数组的元素是相同类型,但JavaScript数组可以包含任意类型. var misc = ['string', n ...

  8. 什么才是正确的javascript数组检测方式

    前面的话 对于确定某个对象是不是数组,一直是数组的一个经典问题.本文专门将该问题择出来,介绍什么才是正确的javascript数组检测方式 typeof 首先,使用最常用的类型检测工具——typeof ...

  9. javascript数组对象排序

    javascript数组对象排序 JavaScript数组内置排序函数 javascript内置的sort函数是多种排序算法的集合 JavaScript实现多维数组.对象数组排序,其实用的就是原生的s ...

  10. javascript数组的知识点讲解

    javascript数组的知识点讲解 阅读目录 数组的基本方法如下 concat() join() pop() push() reverse() shift() sort() splice() toS ...

随机推荐

  1. 安装eclipse时跳转到网页提示JRE Missing

    可能的原因:jdk与安装的eclipse不兼容,可能64位机器安装了32位的jdk,导致64位的eclipse不能识别.

  2. JDBC开源框架:DBUtils使用入门

    在单元测试过程中,只涉及到数据库的直接操作来验证业务逻辑是否正确的情况,DBUtils非常适合使用.它结构简单,包小,友好处理掉那些jdbc异常,让你更专注于业务代码,而非底层的操作.官网对它的定义: ...

  3. 通过自动回复机器人学Mybatis 笔记:接口式编程

    [接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...

  4. bzoj 3996: [TJOI2015]线性代数

    Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的转置.输出D Input 第一行输入一个整数N,接 ...

  5. bzoj 2119: 股市的预测

    Description 墨墨的妈妈热爱炒股,她要求墨墨为她编写一个软件,预测某只股票未来的走势.股票折线图是研究股票的必备工具,它通过一张时间与股票的价位的函数图像清晰地展示了股票的走势情况.经过长时 ...

  6. Zabbix自动发现监控Tomcat进程

    1.编辑自动发现脚本 自动发现脚本只支持JSON格式 #!/usr/bin/env python # -*- coding:utf-8 -*- import commands import psuti ...

  7. Windows Server服务器日常管理技巧

    高效管理服务器一直离不开有效的服务器管理技巧,尽管你已经掌握了不少这方面的技巧,但服务器还有许许多多的技巧在等着你的总结,等着你的挖掘;这不,下面的一些服务器管理窍门就是笔者在最近的工作中总结出来的, ...

  8. java 学习(二)

    public class Scoure { public static void main(String args[]) { int score=90; if (score>=85 && ...

  9. js获取字符串最后一位方法

    方法一:运用String对象下的charAt方法 charAt() 方法可返回指定位置的字符. str.charAt(str.length – 1) 请注意,JavaScript 并没有一种有别于字符 ...

  10. HTML5发布的意义

    解决文档结构混乱 以前的文档结构过度依赖div,HTML5推出了多种语义化标签,使得文档更利于阅读器等理解,更利于SEO优化. 解决浏览器之间的兼容性问题 市场上浏览器种类繁多,每个浏览器厂商都在做自 ...