本文地址:http://www.cnblogs.com/veinyin/p/7607293.html 

一个数组中可以存储不同类型的值,可以混合存储数字、字符串、对象等

1 创建数组

1.1 构造函数

 var colors = new Array();       //自动长度

 var colors = new Array(20);     //长度为20

1.2 数组字面量

 var colors = ["red","yellow","blue"];

 var colors = [];        //空数组

2 检测数组

if(Array.isArray(value)) statement

3 转换方法

3.1 toString()

alert(colors.toString());

3.2 toLocaleString()

3.3 valueOf()

alert(colors.valueOf());

3.4 join()

alert(colors.join("||"));       //用 || 分隔各数组项

4 栈方法

4.1 插入数据

colors.push("value");

4.2 弹出数据

var value = colors.pop();

5 队列方法

5.1 正向操作,数组后端添加,前端取出

5.1.1  插入数据

colors.push("value");

5.1.2 取出数据

var value = colors.shift();

5.2 反向操作,数组前端添加,后端取出

5.2.1 插入数据

colors.unshift("value");

5.2.2 取出数据

var value = pop();

6 重排序

6.1 数组项逆序排列

nums.reverse();

6.2 数组项升序排列

nums.sort();

sort() 函数可以接受一个比较函数作为参数,以便指定哪个值位于哪个值前面

 var num = [0,1,5,10,15];
document.getElementById("index").innerHTML = num.sort().join("||");
num.sort(compare);
document.getElementById("index2").innerHTML = num.join("||");
};
function compare(num1,num2){
if(num1 > num2) {
return 1;
}
else if(num1 < num2){
return -1;
}
else{
return 0;
}
}

第一个结果是 sort() 排序,先比较第一个字符,再比较第二个字符

第二个结果是使用了参数的结果,完全升序,将 return 的正负 1 交换,则实现完全降序

7 concat()

将参数添加到数组末端,可接受一个或多个参数

num.concat(12,34,45,23);

8 slice()

8.1 一个参数

slice(num);
//返回下标为 num 到数组末尾的所有数据项

8.2 两个参数

slice(num1,num2);
//返回下标为 num1 到 num2-1 的所有数据项

9 splice()

9.1 删除

nums.splice(0,2);
//删除下标为 0 开始的两个数据项

9.2 插入

num.splice(2,0,"12","34","45","23");
//插入位置,删除项数,插入内容

插入数据为下标 2 处开始,删除项若不为0,删除原数组中开始项后的数据项

9.3 替换

nums.splice(2,1,"22");

其实就是插入的变形

10 位置方法

10.1 indexOf()

 nums.indexOf(3);
//在 nums 数组中从首端开始查询是否存在 3, 遇到第一个则返回其下标

10.2 lastIndexOf()

 nums.lastIndexOf(3);
//在 nums 数组中从末端开始查询是否存在 3, 遇到第一个则返回其下标

11 迭代方法

func 接收 3 个参数: 数组项的值,该项在数组中的位置,数组对象本身

11.1 nums.every(func);

所有数组项的 func 值均为 true 才返回 true, 否则返回 false

11.2 nums.some(func);

有一个数组项的函数值为 true 则返回 true

11.3 nums.filter(func);

返回函数值为 true 的项组成的数组

11.4 nums.map(func);

返回函数返回的结果组成的数组

11.5 nums.forEach(func);

数组每一项均运行函数,但无返回值

12 缩小方法

两个方法均接受两个参数: 调用函数、作为缩小基础的初始值

两个方法区别, reduce() 正序遍历, reduceRight() 逆序遍历

  • reduce(func);

  • reduceRight(func);

func 接收 4 个参数: 前一个值、当前值、项的索引、数组对象 测试似乎用到了前两个参数

 var sum = nums.reduce(function(prev,cur,index,array){
return prev + cur;
});

引用类型 ( 对象定义 )——Array 类型的更多相关文章

  1. 引用类型 ( 对象定义 )——Function 类型

    本文地址:http://www.cnblogs.com/veinyin/p/7607798.html  函数实际上是对象,也具有属性和方法,函数名实际上是指向函数对象的指针 function sum( ...

  2. 引用类型 ( 对象定义 )——Object 类型

    本文地址:http://www.cnblogs.com/veinyin/p/7607100.html  创建实例 new 操作符后跟构造函数 var people = new Object(); pe ...

  3. 引用类型 ( 对象定义 )——Date 类型

    本文地址:http://www.cnblogs.com/veinyin/p/7607743.html  1 创建日期对象 var date = new Date(); 2 可以给日期对象传值 2.1 ...

  4. 引用类型 ( 对象定义 )——RegExp 类型

    var expression = /pattern/flags; 以上为创建正则表达式格式,斜线包围的为正则表达式,flags 有三个值可以选择 本文地址:http://www.cnblogs.com ...

  5. 引用类型(二):Array类型

    一.js中的数组与其它语言中的数组的区别1.ECMAScript数组的每一项可以保存任何类型的数据2.ECMAScript数组的大小是可以动态调整的 二.创建数组的基本方式1.使用Array构造函数 ...

  6. JavaScript中判断对象是否属于Array类型的4种方法及其背后的原理与局限性

    前言 毫无疑问,Array.isArray是现如今JavaScript中判断对象是否属于Array类型的首选,但是我认为了解本文其余的方法及其背后的原理与局限性也是很有必要的,因为在JavaScrip ...

  7. Javascript高级编程学习笔记(13)—— 引用类型(2)Array类型

    除了Object类型之外ECMA中最常用的引用类型可能就是Array类型了 并且ECMA中的数组类型和其他大多数编程语言的数组类型存在着很大的区别 今天就介绍一下JS中的Array的特别之处 区别 1 ...

  8. Postgres 的 Array 类型

    mysql 不支持 Array 类型 一.Postgres 原生SQL 适用场景:可以用于实现贴标签功能 1.定义 CREATE TABLE "Students" ( name V ...

  9. JavaScript引用类型之Array类型一

    一.简介 除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了.下面就来分析ECMAScript中的数组与其他语言中的数组的异同性: 1.相同点: (1)他们都是数据的有序列 ...

随机推荐

  1. DB2的编目

    D在DB2数据库中,编目(catalog)这个单词很难理解,我自己当初在学习DB2的时候也常常被这个编目搞的很不明白,直到现在我个人也感觉到DB2中编目(catalog)这个术语用的不是很好,具体来说 ...

  2. WebService(三)

    JAX-WS简单使用示例: 1.服务端 package com.rong.service; import javax.jws.WebMethod; import javax.jws.WebParam; ...

  3. php 多维数组排序

    PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以 ...

  4. Spring学习 6- Spring MVC (Spring MVC原理及配置详解)

    百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...

  5. equals与==区别

    equals与==区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean   他们之间 ...

  6. python 锁 信号量 事件 队列

    什么是python 进程锁? #同步效率低,但是保证了数据安全  重点 很多时候,我们需要在多个进程中同时写一个文件,如果不加锁机制,就会导致写文件错乱 这个时候,我们可以使用multiprocess ...

  7. BZOJ4719 NOIP2016天天爱跑步(线段树合并)

    线段树合并的话这个noip最难题就是个裸题了. 注意merge最后return x,以及如果需要区间查询的话这里还需要up,无数次死于这里. #include<iostream> #inc ...

  8. C++解析(18):C++标准库与字符串类

    0.目录 1.C++标准库 2.字符串类 3.数组操作符的重载 4.小结 1.C++标准库 有趣的重载--操作符 << 的原生意义是按位左移,例:1 << 2;,其意义是将整数 ...

  9. 二维RMQ模板

    int main(){ ; i <= n; i++) ; j <= m; j++) { scanf("%d", &val[i][j]); dp[i][j][][ ...

  10. 洛谷 P3338 [ZJOI2014]力 解题报告

    P3338 [ZJOI2014]力 题目描述 给出n个数qi,给出Fj的定义如下: \(F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{i>j ...