javascript数组

这里写图片描述
数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示(从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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值