数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示(从0开始),称为索引,整个数组用方括号表示。
javascript数组的索引是基于零的32位数值,第一位索引是0,最大的索引为2^32-1
1.创建数组
下面我们用2种方式创建数组
1. 数组字面量
1.一维数组
var empty = []; //空数组
var primes = [2,3,5,7,11]; //有5个数值的数组
var arr = ['Nunnly',123,true];//3个不同类型的元素和结尾的逗号
2.多维数组
var arr = [[0,1],[2,3],[4,5]];
2.构造函数
1.一维数组
var arr = new Array(); //空数组,等同于数组字面量
var arr = new Array(100); //指定长度数组,元素值为undefined,索引属性未定义
var arr = new Array(true,null,5,4,3,"testing");//指定元素数组
2.多维数组
var arr = new Array([0,1],[2,3],[4,5]);
//new可以省略
2.基本操作
1.读写数组元素
var arr = [1,2]
arr[0] //1
arr[1]=3; // [1,3]
2.添加元素(两种方法)
1.为最后一个空位赋值
var numbers = [0,1,2,3,4,5,6,7,8,9];
numbers[10] = 10; //var numbers = [0,1,2,3,4,5,6,7,8,9,10];
2.在数组末尾添加元素,用push方法
var numbers = [0,1,2,3,4,5,6,7,8,9];
numbers.push(10,11);//var numbers = [0,1,2,3,4,5,6,7,8,9,10,11];
3.在数组首位添加元素,用unshift方法
var numbers = [0,1,2,3,4,5,6,7,8,9];
numbers.unshift(-2);//var numbers = [-2,0,1,2,3,4,5,6,7,8,9];
3.删除元素
1.删除数组第一个元素,用shift方法
var numbers = [0,1,2,3,4,5,6,7,8,9];
numbers.shift();//var numbers = [1,2,3,4,5,6,7,8,9];
2.删除数组最后一个的元素,用pop方法
var numbers = [0,1,2,3,4,5,6,7,8,9];
numbers.pop();//var numbers = [0,1,2,3,4,5,6,7,8];
3.删除和添加数组中任意位置的元素,用splice方法
var numbers = [0,1,2,3,4,5,6,7,8,9];
numbers.splice(5,3);//删除 var numbers = [0,1,2,3,4,8,9];
numbers.splice(5,0,2,3,4);//添加var numbers = [0,1,2,3,4,2,3,4,8,9];
4.遍历数组
我们可以使用for循环、while循环、for..in或者forEach()方法来遍历数组
var a = [1, 2, 3];
for(var i = 0; i < a.length; i++) {
console.log(a[i]);
}
//while
var i = 0;
while (i < a.length) {
console.log(a[i]);
i++;
}
//for..in
for (var i in a) {
console.log(a[i]);
}
//forEach
a.forEach(function(v){
console.log(v);
})
3.数组属性
1.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 numbers = [0,1,2,3,4,5,6,7,8,9];
document.write(numbers.length);//数组长度为10
numbers.length = 20;
document.write(numbers.length);//数组长度为20
3.prototype 属性使您有能力向对象添加属性和方法。
4.数组方法
1.concat() 方法用于连接两个或多个数组。
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"
document.write(arr.concat(arr2));
子数组 1.splice 2.slice
2.slice() 传入索引值,将数组里对应索引范围内的元素作为新数组返回
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr + "<br />");
document.write(arr.slice(2,4) + "<br />");
document.write(arr);
数组排序 1.reverse 2.sort
3.reverse() 方法用于颠倒数组中元素的顺序。
var arr = [1,2,3,4,5,6];
document.write(arr.reverse());//var arr = [6,5,4,3,2,1];
4.sort() 方法用于对数组的元素进行排序。
var arr = [33, 4, 1111, 222];
arr.sort(); //字母表顺序: 1111, 222, 33, 4
arr.sort(function (a, b) {//数值顺序:4, 33, 222, 1111
return a-b; //根据顺序,返回负数、0、正数
});
arr.sort(function(a, b) {return b - a});
5.toStriing()和toLocaleString()方法可把数组转换为字符串,并返回结果。
var arr = [George, John, Thomas];//创建一个数组
document.write(arr.toString());//生成'George, John, Thomas'
document.write(arr.toLocaleString()); //生成'George, John, Thomas'
6.join() 方法用于把数组中的所有元素放入一个字符串。
var a = [1,2,3];
var b =a.join(" ");//"1 2 3"
var c = new Array(10);
var d = c.join('-');//"---------"
7.indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
var a = [0,1,2,1,0];
var b = a.indexOf(2);
document.write(b);//2
5.类数组方法转换为数组
ES5
进行这种转换需要编写一个函数,类似下面这样:
function makeArray(arrayLike) {
var result = [];
for (var i = 0, len = arrayLike.length; i < len; i++) {
result.push(arrayLike[i]);
}
return result;
}
function doSomething() {
var args = makeArray(arguments);
// 使用 args
}
该方式手动创建了一个 result 数组,并将 arguments 对象的所有项复制到该数组中。
。这种
方式虽然有效,却为一个简单操作书写了过多的代码。开发者最终发现他们可以调用数组原
生的 slice() 方法来减少代码量,就像这样:
function makeArray(arrayLike) {
return Array.prototype.slice.call(arrayLike);
}
function doSomething() {
var args = makeArray(arguments);
// 使用 args
}
ES6
尽管这种技巧所用的代码量更少,但调用 Array.prototype.slice.call(arrayLike) 并没有明
确体现出“要将类数组对象转换为数组”的目的。
幸运的是, ES6 新增了 Array.from() 方法
来提供一种明确清晰的方式以解决这方面的需求。
function doSomething() {
var args = Array.from(arguments);
// 使用 args
}
6.数组去重
ES6
扩展运算符和 Set 结构相结合,就可以去除数组的重复成员。
let arr = [3, 5, 2, 2, 5, 5];
let unique = [...new Set(arr)];
// [3, 5, 2]

2179

被折叠的 条评论
为什么被折叠?



