您的位置:首页 > Web前端 > JavaScript

javascript学习笔记4:数组基础及其操作

2017-03-20 22:35 204 查看

基础知识

javascript是无类型的:数组元素可以是任意类型,并且同一个数组的不同元素也可能是不同的类型,甚至也可以是对象或其他数组

Javascript的索引范围[0,2^32-2],数组最大能容纳2^32-2个元素。

javascript的数组是动态的:根据需要它们会增长或者缩减,并且在创建数组时无需声明一个固定的大小或者在数组大小变化时无需从新分配空间。

javascript数组可能是稀疏的:数组元素的索引不一定是连续的,它们之间可以有空缺。

每个数组有一个length属性,针对非稀疏数组数组,该该属性就是数组元素的个数,但是稀疏数组的length比所有元素的索引要大。

创建数组

直接创建:

var empty = [];

var primes = [2, 3, 5, 7];

var misc = [2.33, true, "string", ]; // 长度依然为3,最后一个逗号总是被忽略

var misc [2.33, true, "string", , ]; // 长度为4,最后一个逗号被忽略


数组的值不一定是常量,也可以是表达式、数组、对象

var base = 2333;
var arr = [base, base+1, base+2];

var b = [{a: 23}, [12, 13, 14]];


调用Array()创建数组。

//调用时没有参数,等同于 arr = []
var arr = new Array();

//调用时预先知道数组的长度
var arr = new Array(10);

//调用时显式的指定两个以及多个数组元素
var arr = new Array(1, 2, 3, 4, "hello");


javascript数组没有越界的概念,当试图查询任何对象中不存在的属性时,不会报错,只会得到undefined值

数组元素的添加和删除

通过索引赋值

var arr = [];
a[0] = "hello";


使用push()方法在数组末尾添加一个或者多个元素

var a = [];
a.push("hello");
a.push(",", "world!");
a[a.length] = "yes";


在数组首部添加一个元素

var a = [1, 2, 3];
a.unshift(0); //数组头部添加一个元素或者多个元素,并将已经存在的元素移动到更高的索引位置

//效果同unshift(0)
for (var i = arr.length - 1; i >= 0; i--) {
arr[i] = arr[i+1];
}
arr[0] = 0;


删除数组尾部的元素

var arr = [1, 2, 3, 4, 5];
delete arr[4];  //arr = [1, 2, 3, 4, ];
arr.pop(); // arr = [1, 2, 3, 4];


删除数组首部的元素

//原生删除
var arr = [1, 2, 3, 4, 5];
for (var i = 0; i < arr.length; i++) {
arr[i] = arr[i+1];
} //结果 arr = [2, 3, 4, 5, undefined]

//shift()方法删除数组第一个元素并将其返回,然后把所有随后的元素下移一个位置
arr.shift(); //arr = [3, 4, 5, undefined]


字符串的连接,join()函数将所有元素都转化为字符并且连接在一起,返回最后生成的字符串,如果不指定参数,默认使用“,”连接。

var arr = [1, 2, 3, 4, 5];
arr.join();  //'1,2,3,4'
arr.join("");  //'1234'
arr.join("-"); //'1-2-3-4'


reverse()方法将数组中的元素逆序排序,返回逆序数组。

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


sort()方法将数组中的元素排序并且返回排序后的数组。当不带参数调用sort()时,数组以字母表顺序排序。当数组中包含undefined的时,将被排到末尾

var arr = ["e", "b", "d", , "c", "a"];
arr.sort(); //arr = ["a", "b", "c", "d", "e", ];


slice()方法指定数组的一个片段或子数组。两个参数分别指定开始和结束的位置。如果只指定一个参数返回数组包含从开始到数组结尾的所有元素。如果参数中有负数,例如-3指的是倒数第三个元素。slice()方法不会改变原数组

// slice(a, b)是返回索引[a ,b)范围内的元素
var arr = "hello,world"; //字符串相当于一个数组,类数组对象
arr.slice(0, 5); //hello
arr.slice(-7, -1); //o,worl


splice()方法在数组中插入或者删除元素,跟slice()方法不同,splice()会改变数组本身。插入或删除数组时,length随之而变。

//删除:
var arr = [ 'a', 'b', 'c', 'd', 'e' ];
arr.splice(3); //返回值是从3到最后['d', 'e'],arr = ['a', 'b', 'c']
arr.splice(1, 2);//返回值是['b', 'c'], arr = ['a']

//插入:


toString()和toLocaleString() 针对数组toString()将其每个元素转化为字符串并且输出用逗号分隔的字符串列表

var arr = [1, 2, 3];
arr.toString(); //'1,2,3'
var arr = [1, [2, "c"]];
arr.toString()  //'1,2,c'


这里与不使用参数的arr.join()返回的字符串一样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: