JavaScript中Array 对象

JavaScript中创建数组有两种方式

(一)使用直接量表示法:

var arr4 = []; //创建一个空数组
var arr5 = [20]; // 创建一个包含1项的数组
var arr6 = ["lily","lucy","Tom"]; // 创建一个包含3个字符串的数组
//查看数组的length长度(也就是说,length可以重新给数组定义长度,比原来的长,后面加逗号;比原来的短,会把之前定义的数组截断后,输出。)

  var arr=["a","z","o","p","f","g"];
  alert(arr.length);//6

  //比原来的数组长
  arr.length=10;

  alert(arr);//a,z,o,p,f,g,,,,
  alert(arr.length);//10

  // 比原来的数组短  

  arr.length=3;
  alert(arr);//a,z,o
  alert(arr.length);//3

(二)使用new Array 构造函数:

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

JavaScript中数组的方法也有好多,下面我们就一一介绍一下吧!~

1、indexOf()返回指定元素的位置,若元素不存在返回-1.(从前往后)

     lastIndexOf()返回指定元素的位置,若元素不存在返回-1.(从后往前)

var arr=[1,2,3];
alert(arr.indexOf(3));//2
alert(arr.indexOf(4));//-1
alert(arr.lastIndexOf(3));//2

2、slice()参数对应的是要返回项的起始位置和结束位置,若只有一个参数,该方法返回从参数指定位置到数组结尾的所有项,如果有两个参数则返回起始位置到结束位置之间的项但不包括结束位置项,返回的结果是一个新的数组,原数组不变.(如果是负数的话,是从后往前数,而且是从下标为1开始)

var arr=[1,2,3,4,5,6];
alert(arr.slice(0,3));//1,2,3
alert(arr.slice(3));//4,5,6

3、push()向数组末尾添加若干元素,返回添加元素后数组的长度.

var arr=[1,2,3];
alert(arr.push(4,5,6));//6 

4、pop()删除数组末尾最后一个元素,返回被删除的元素,若数组为空则返回undefined.

var arr=['a','b','c',];
alert(arr.pop());//c
var arr=[];
alert(arr.pop());//undefined

5、unshift()在数组头部添加若干元素,返回添加元素后数组的长度.

var arr=['a','b','c','d'];
alert(arr.unshift(1,2,3));//7

6、shift()删除数组头部的第一个元素,并返回被删除的元素,若数组为空则返回undefined.

var arr=[1,2,3];
alert(arr.shift());//1
var arr=[];
alert(arr.shift());//undefined

7、sort()对数组进行排序,返回排序以后的数组,默认把所有元素转化为字符之后再进行排序,排序以后会改变原数组.(默认顺序是以ASCII排序的)

//对数字的数组排序,必须给它创建一个函数
function sortNumber(a,b){
return a-b;
}
var arr=[2,1,111,22,333];
alert(arr.sort(sortNumber));//1,2,22,111,333 //对英文字母进行排序
var arr=["a","z","o","p","f","g"];
alert(arr.sort());//a,f,g,o,p,z

    注意: 可以通过一个自定义的比较函数来进行排序,比较函数接收两个参数,如果第一个参数应该位于第二个参数之前应该返回负数,如果第一个参数应该位于第二个参数之后应该返回正数,若相等返回0,排序之后会改变原数组.

function compare(val1,val2){
return val1-val2;
}
var arr = [3,2,9,4];
alert(arr.sort(compare));//返回2,3,4,9

8、reverse()对数组中的数据进行反转,返回反转后的数组.

var a=[1,2,3];
alert(a.reverse());//3,2,1

9、splice()从指定位置删除若干元素,然后再从该位置添加若干元素,结果返回被删除的元素,第一个参数表示起始删除的位置,第二个参数表示要删除元素的个数,之后的元素表示要添加的元素.

var arr=[1,2,3,4,5,6];
alert(arr.splice(1,2,'a','b'));//2,3
alert(arr);//1,a,b,4,5,6

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

var arr=['a','b','c','d'];
alert(arr.concat([1,2,3]));//a,b,c,d,1,2,3
alert(arr);//a,b,c,d

11、join()将数组中的每一个元素用指定的字符串连接起来,返回字符串.

//join()把数组转换为字符串类型
var arr=[1,2,3,4,5,6];
alert(arr.join('-'));//1-2-3-4-5-6 

12、map()(指映射)对数组中的每一项运行函数,返回函数运行结果组成的数组,函数的参数是一个函数,而该函数接收三个参数:数组当前值,数组索引、数组.

//咱们可以用平方根给它举个例子
var arr=[1,2,3,4];
//alert(arr.map(Math.sqrt));//这个也是平方
//alert(arr.map(function(x){
//相当于x的平方
return x * x;
})); //返回1,4,9,16

13、reduce()从数组的第一项开始,逐个遍历到最后,函数接受两个参数,一个是在数组上调用的函数和归并的初始值(可选),而调用数组的函数.接受四个参数:前一个值、当前值、当前值索引、当前数组,第一次调用时,前一个值是数组第一项,当前值是数组第二项.

var arr=[1,2,3,4,5,6];
var result = arr.reduce(function(prev,cur,index,array){
return prev+cur
})
alert(result);//返回21(就是他们相加)

14、filter()对数组中的每一项运行函数,返回该函数返回true的元素组成的数组.

var arr = [1,-3,2,-4,-6,0];
var newArr = arr.filter(function(x){
if(x>=0){
return true;
}else{
return false;
}
})
alert(newArr)//返回1,2,0

15、toString()将当前对象以字符串的形式返回.

var arr = ['1','2'];
alert(arr.toString());//返回1,2
alert(typeof arr.toString());//string

16、valueOf()调用该方法返回的依旧是数组.

var arr = [1,2];
alert(arr.valueOf());//alert返回的都是字符串,故返回1,2,而arr.valueOf()是数组.
//之前判断类型都是typeof,像Array判断类型只会输出object,而instanceof就不是,他会判断是不是数组.
alert(arr.valueOf() instanceof Array);//返回true
alert(typeof arr.valueOf());//object

17、toLocaleString()方法可根据本地时间把 Date对象转换为字符串,并返回结果.

var born = new Date("July 21, 1983 01:15:00")
document.write(born.toLocaleString());//1983/7/21 上午1:15:00

18、forEach()对数组进行遍历循环,对数组中的每一项运行给定函数。这个方法没有返回值.参数都是function类型,默认有传参,参数分别为:遍历的数组内容;第对应的数组索引,数组本身.

var arr = [1, 2, 3, 4, 5];
arr.forEach(function(x, index, a){
console.log(x + '|' + index + '|' + (a === arr));
});
// 输出为:
// 1|0|true
// 2|1|true
// 3|2|true
// 4|3|true
// 5|4|true

19、filter():判断一个数组的元素,与给出的值做一个比较,符合条件作出筛选(必须的定义函数)

var ages1=[23,34,56,66,888];
function cha1(age1){
if(age1>=34){
return age1;
}
}
document.write(ages1.filter(cha1));

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

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

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

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

22、reduce()和 reduceRight() 

  [reduce()接受一个函数作为累加器,数组中每个值(从左到右)开始缩减,最中计算为一个值。total的初始值=数组的初始值]

  这两个方法都会实现迭代数组的所有项,然后构建一个最终返回的值。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);
console.log(sum); //25

这里我们可以接触一下:

获取数组最大值与最小值:

var array=[1,222,32,4];
alert(Math.max.apply(null,array)); //222
alert(Math.min.apply(null,array)); //1

JavaScript中Array(数组) 对象的更多相关文章

  1. JavaScript 中Array数组的几个内置函数

    本文章内容均参考<JavaScript高级程序设计第三版> 今天在看JavaScript书籍的时候,看到之前没有了解过的JavaScript中Array的几个内置函数对象,为了之后再开发工 ...

  2. javascript中的数组对象

    1.创建数组的三种方式: 1.1 var 数组名=[元素1,元素2,元素3...]; 例如: var arr1=[1,2,3,4]; 1.2 var 数组名=new Array(元素1,元素2,元素3 ...

  3. JavaScript 中有关数组对象的方法

    JS 处理数组多种方法 js 中的数据类型分为两大类:原始类型和对象类型. 原始类型包括:数值.字符串.布尔值.null.undefined 对象类型包括:对象即是属性的集合,当然这里又两个特殊的对象 ...

  4. JavaScript中Array数组的方法

    查找: indexOf.lastIndexOf 迭代:every.filter.forEach.map.somereduce.reduceRight 用法: /* 1 查找方法: * arr.inde ...

  5. javascript中对数组对象的深度拷贝

    在前端开发的某些逻辑中,经常需要对现有的js对象创建副本,避免污染原始数据的情况. 如果是简单的一维数组对象,可以使用两个原生方法: 1.splice var arr1 = ['a', 'b', 'c ...

  6. numpy中array数组对象的储存方式(n,1)和(n,)的区别

    资料:https://stackoverflow.com/questions/22053050/difference-between-numpy-array-shape-r-1-and-r 这篇文章是 ...

  7. JavaScript中的数组对象遍历、读写、排序等操作

    以百度前端技术学院的js任务三为例,复习一下关于js数组的几个点 题目 <!DOCTYPE> <html> <head> <meta charset=&quo ...

  8. Javascript中Array(数组)对象常用的几个方法

    Javascript中Array数组的几个常用方法 pop()  --获取数组中末尾的元素 shift() --获取数组中首位元素 push() --在数组中末尾增加元素 slice()  --按照下 ...

  9. Javascript进阶篇——( JavaScript内置对象---下)--Array数组对象---笔记整理

    Array 数组对象数组对象是一个对象的集合,里边的对象可以是不同类型的.数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的数组定义的方法: 1. 定义了一个空数组: var ...

随机推荐

  1. nexus 私服 低配置服务器启动不能访问的问题

    1核1G的渣渣服务器启动无法访问. 请更换更高配置的服务器.

  2. 并发编程之线程创建到销毁、常用API

    在前面一篇介绍了线程的生命周期[并发编程之多线程概念],在本篇将正式介绍如何创建.中断线程,以及线程是如何销毁的.最后,我们会讲解一些常见的线程API. 线程创建 Java 5 以前,实现线程有两种方 ...

  3. js 正则表达式:价格的校验

    /*验证单价:包括两位小数*/var priceReg = /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/;var price=$("#price& ...

  4. 遇到XML-GB2312网页编码的处理方法

    报的错误:encoding error : input conversion failed due to input error, bytes  I/O error : encoder error 1 ...

  5. redis的几个知识点

    Redis的全称是Remote Dictionary Server,即远程字典服务,通常用作服务器缓存服务. 这里通过Redis的几个知识点来了解Redis. Redis的通讯协议 Redis的通讯协 ...

  6. Python网络爬虫实战(四)模拟登录

    对于一个网站的首页来说,它可能需要你进行登录,比如知乎,同一个URL下,你登录与未登录当然在右上角个人信息那里是不一样的. (登录过) (未登录) 那么你在用爬虫爬取的时候获得的页面究竟是哪个呢? 肯 ...

  7. Windows 笔记 - 用到的设置

    博客地址:http://www.moonxy.com 在日常使用 Windows 的过程中,或多或少会遇到一些设置,记录下来,以备以后使用. 1. 不重启电脑使 hosts 生效的解决方法 有时候需要 ...

  8. 13 (OC)* SDWebImage

    IOS SDWebImage实现原理详解   在之前我写过SDWebImage的使用方法,主要是用与获取网络图片,没有看过的朋友可以看看. 这篇文章将主要介绍SDWebImage的实现原理,主要针对于 ...

  9. Layer弹层(父子传值,兄弟传值)

    需求:最外面列表界面点修改弹出LayerA界面,再点击LayerA界面中的选择地图坐标按钮弹出LayerB地图界面 这个过程涉及到的: 1:LayerA将坐标传给LayerB,LayerB在地图上显示 ...

  10. Spring Boot + WebSocket 学习笔记

    首先需要了解一下背景,什么是WebSocket以及为什么要用WebSocket. 在常见的Web应用中,客户端与服务器通信,都是通过HTTP协议进行通信,客户端一次请求,服务端一次响应.而WebSoc ...