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. 4.1、顺序栈的实现(java实现)

    1.实现源码 public class SeqStack { private final int MaxSize = 8; private int top; //栈顶 private Object s ...

  2. Sqoop介绍、安装与操作

    搭建环境 部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放 Hadoop等组件运行包.因为该目录用于安装hadoo ...

  3. tomcat日志信息查看

    不要老只看 start in xxx ms 后的信息,有时在部署项目时可能就出错了呢? 按照下面这样子做,会使用tomcat输出的错误信息更为详细 在WEB-INF/classes目录下新建一个名为 ...

  4. Python--使用四种随机方法(Random)来产生随机价格

    import random # 卖橘子的计算器:写一段代码,提示用户输入橘子的价格,# 然后随机生成购买的斤数(5到10斤之间),最后计算出应该支付的金额! # 第一种# orange_price = ...

  5. Laravel 5.4 快速开发简书:

    Laravel 5.4 快速开发简书第1章 课程介绍 介绍课程的大体脉络和课程安排 第2章 Laravel 5.4介绍 本节课会带领大家介绍laravel的各个版本历史以及讨论php框架的未来发展趋势 ...

  6. fslove - Matlab求解多元多次方程组

    fslove - Matlab求解多元多次方程组 简介: 之前看到网上的一些资料良莠不齐,各种转载之类的,根本无法解决实际问题,所以我打算把自己的学到的总结一下,以实例出发讲解fsolve. 示例如下 ...

  7. Sentinel基本概念

     Sentinel是阿里开源的一款高性能的限流框架.这里将对Sentinel的使用和实现进行介绍.  这里先介绍下Sentinel中涉及到的基本概念,包括使用上或者实现上.主要是笔者在阅读文档和源码时 ...

  8. 完整的Android MVP开发之旅

    开发背景 最近是在做一个与健身相关的APP,里面有训练器模块基本功能是按照特点动作的演示和描述来引导用户完成训练.在第一个版本时由于没接触过些类项目与功能花了几周的时间大概1500行代码才完成这个功能 ...

  9. Spark 学习笔记之 Streaming和Kafka Direct

    Streaming和Kafka Direct: Spark version: 2.2.0 Scala version: 2.11 Kafka version: 0.11.0.0 Note: 最新版本感 ...

  10. Oracle自带工具sql优化集-SQL Tuning Advisor (使用心得体会)

    如何有效的诊断和监控高负载的SQL对于DBA来说并非是件容易的事情,对SQL语句手工调优需要很多的经验和技巧, 结合个人经验常见如下问题:          . 对SQL语句本身进行优化以便获得更优的 ...