首页
HTML+CSS
JavaScript
Vue
WordPress
WP Functions
注册/登录
首页 > JavaScript > 正文

JS:数组

一、数组的定义方式

数组的2种定义方式:字面量和构造函数。

var arr1 = [1,2,3]; 
var arr2 = new Array(1,2,3);
console.log(arr1);  // [1,2,3]
console.log(arr2);  // [1,2,3]

大部分情况两种方法的效果是一样的,但是也有特殊情况:

var arr1 = [10];
var arr2 = new Array(10);
var arr3 = new Array("10");

console.log(arr1);  // [10]
console.log(arr2);  // 10个长度的空数组
console.log(arr3);   // ["10"]

从上例可以看出,用Array构造一个数组时,

  • 当Array()函数中放一个数字,他会创造一个以这个数字作为长度的空数组
  • 当Array()函数中放一个字符串,他会创造一个元素的数组,字符串即为元素值

当Array()中放入一个小数,结果如何:

var arr1 = [10.2];
console.log(arr1);   // [10.2]

var arr2 = new Array(10.2); // 报错:Invalid array length
console.log(arr2);

结过会报错,因为小数不能作为数组的长度。

空数组指定位赋值,可以扩充数组长度。

var arr = [];
console.log(arr);   // []
console.log(arr[2]);    // undefined

arr[10] = 1;
console.log(arr);   // [empty x 10, 1]
arr[11] = 2;
console.log(arr);   // [empty x 10, 1, 2]
console.log(arr.length);    // 12

二、数组的一些方法

方法 描述
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
pop() 删除并返回数组的最后一个元素
sort() 对数组的元素进行排序
reverse() 颠倒数组中元素的顺序。
shift() 删除并返回数组的第一个元素
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
splice() 删除元素,并向数组添加新元素。
slice() 从某个已有的数组返回选定的元素
toString() 把数组转换为字符串,并返回结果。
concat() 连接两个或更多的数组,并返回结果。
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

1、改变原数组:

  • push,pop,shift,unshift,sort,reverse
  • splice

2、不改变原数组:

  • concat,join->split,toString,slice

数组尾部增加:push方法

功能:push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

语法:arrayObject.push(newelement1,newelement2,….,newelementX)

参数newelement1:必需。要添加到数组的第一个元素。

参数newelement2:可选。要添加到数组的第二个元素。

参数newelementX:可选。可添加多个元素。

var arr = [];

arr.push(1);
console.log(arr);   // [1]

arr.push(2,3);
console.log(arr);   // [1, 2, 3]

数组尾部减少:pop方法

功能:pop() 方法用于删除并返回数组的最后一个元素。

语法:arrayObject.pop()
var arr = [1, 2, 3];
arr.pop();
console.log(arr);   // [1, 2]

数组头部操作:shift方法

功能:shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。

语法:arrayObject.shift()

数组头部操作:unshift()方法

功能:unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

语法:arrayObject.unshift(newelement1,newelement2,….,newelementX)

参数newelement1:必需。要添加到数组的第一个元素。

参数newelement2:可选。要添加到数组的第二个元素。

参数newelementX:可选。可添加多个元素。

var arr = [1, 2, 3];
arr.shift();
console.log(arr);   // [2, 3]

arr.unshift(0);
console.log(arr);   // [0, 2, 3]

arr.unshift(-1, 5);
console.log(arr);   // [-1, 5, 0, 2, 3]

sort方法

功能:用于对数组的元素进行排序。

语法:arrayObject.sort(sortby)

参数:sortby 可选。规定排序顺序。必须是函数。

var arr = new Array(6)
arr[0] = 10
arr[1] = 5
arr[2] = 40
arr[3] = 25
arr[4] = 1000
arr[5] = 1
arr.sort(); // [1, 10, 1000, 25, 40, 5]
console.log(arr);

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。

要实现按照数值大小排序,就必须使用一个排序函数:

function sortNumber(a,b) {
    return a - b; // 从小到大
    // return b - a; // 从大到小
    // return Math.random() - 0.5; // 随机排序
}
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
console.log(arr);
console.log(arr.sort(sortNumber));

下面代码实现数组元素为对象时的排序

var cheng = {
    name : "cheng",
    age : 18,
    sex : "male",
    face : "handsome"
};

var deng = {
    name : "deng",
    age : 40,
    sex : undefined,
    face : "amazing"
};

var zhang = {
    name : "zhang",
    age : 22,
    sex : "male"
};

var arr = [cheng, deng, zhang];

function sortNumber(a,b) {
    return a.age - b.age;
}

arr.sort(sortNumber)
console.log(arr);

reverse 方法

功能:用于颠倒数组中元素的顺序。

语法:arrayObject.reverse()

var arr = [1, 2, "a", 4, 5];
arr.reverse();
console.log(arr);   // [5, 4, "a", 2, 1]

splice 方法

功能:向/从数组中添加/删除项目,然后返回被删除的项目。

语法:arrayObject.splice(index,howmany,item1,…..,itemX)

index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, …, itemX 可选。向数组添加的新项目。

var arr = [1, 1, 2, 2, 3, 3];
console.log(arr.splice(1, 2));  // [1, 2]
console.log(arr);   // [1, 2, 3, 3]

var arr = [1, 1, 2, 2, 3, 3];
console.log(arr.splice(1, 2, 6, 6, 6));  // [1, 2]
console.log(arr);   // [1, 6, 6, 6, 2, 3, 3]

var arr = [1, 1, 2, 2, 3, 3];
console.log(arr.splice(1, 0, 6, 6, 6));  // []
console.log(arr);   // [1, 6, 6, 6, 1, 2, 2, 3, 3]

toString方法

功能:把数组转换为字符串,并返回结果。

语法:arrayObject.toString()

var arr = [1, 2, 3, 4, 5, 6];

console.log(arr.toString());    // 1,2,3,4,5,6

slice 方法

功能:从已有的数组中返回选定的元素。不改变原数组。

返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

语法:arrayObject.slice(start,end)

start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

var arr = [1, 2, 3, 4, 5, 6];

var newArr1 = arr.slice(1,3);    // [2, 3]
var newArr2 = arr.slice(1);  // [2, 3, 4, 5, 6]
var newArr3 = arr.slice(-4);    // [3, 4, 5, 6]
var newArr4 = arr.slice();  // [1, 2, 3, 4, 5, 6]

join方法

功能:把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

语法:arrayObject.join(separator)

separator:可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。

var arr = [1, 2, 3, 4, 5, 6];

console.log(arr.join("-")); // 1-2-3-4-5-6

split方法:这是一个字符串的方法,返回数组。

功能:把一个字符串分割成字符串数组。

语法:stringObject.split(separator,howmany)

separator:必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany:可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

var arr = [1, 2, 3, 4, 5, 6];

var str = arr.join("-");
console.log(str);   // 1-2-3-4-5-6

console.log(str.split("-"));    // ["1", "2", "3", "4", "5", "6"]

concat方法

功能:用于连接两个或多个数组。

语法: arrayObject.concat(arrayX,arrayX,……,arrayX)

arrayX:必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。

返回值:

返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。

看下面2个例子:

var arr = [1, 2, 3, 4, 5, 6];
var newArr = arr.concat(7,8)
console.log(newArr);   // [1, 2, 3, 4, 5, 6, 7, 8]

var arr = [1, 2, 3];
var newArr = arr.concat([7,8])
console.log(newArr);   // [1, 2, 3, 7, 8]

 

 

 

展开全部
分享到:

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2012-2013 Weesh Net Media
扫二维码
扫二维码
返回顶部