首页 JavaScript之数组
文章
取消

JavaScript之数组

数组

JavaScript数组的基本方法简介。

数组元素的增删

1
2
3
4
5
6
7
8
var array = [];
array[0] = 22;
array.push("sstd");  // 尾部追加
array[array.length]=521; // 尾部追加
array.unshift(5);  // 头部添加
console.log(array);
//result:
[ 5, 22, 'sstd', 521 ]

数组元素的删除

1
2
3
4
5
6
7
8
9
10
11
12
delete array[1];  // 删除其中一个元素,该值变为undefined,数组长度不变
console.log(array);  // [ 5, , 'sstd', 521 ]
console.log(array.length); // 4
array.length -= 1;  // 删除最后一个元素 
console.log(array);  // [ 5, , 'sstd' ]
console.log(array.length); // 3
array.pop();  // 尾部删除元素
console.log(array);  // [ 5,  ]
console.log(array.length); // 2
array.shift();  // 头部删除元素 
console.log(array); // [  ]
console.log(array.length); // 1

数组遍历

1
2
3
4
5
6
7
8
9
10
var array = [[1, 2, 3], [4, 5, 6]];
for (var i = 0; i < array.length; i++)
for (var j = 0; j < array[i].length; j++)
console.log(array[i][j]);

var arr = [15, 2, 110, 78, 65, 100];
arr.forEach(function (x)
{
console.log(x);
})

数组方法

数组转字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
var arr = [1,2,3];

console.log(arr.join());
console.log(arr.join("-"));
function repeatString(str, n)
{
return new Array(n+1).join(str);
}
console.log(repeatString("Hi",3));
result:
1,2,3
1-2-3
HiHiHi

数组逆置

数组逆置会改变原数组顺序。

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

数组排序

数组排序会改变原数组顺序。

1
2
3
4
5
6
7
8
var arr = [ 15, 110, 2, 'd', 'a', 'c' ]
arr.sort();
console.log(arr);  // [ 110, 15, 2, 'a', 'c', 'd' ]
arr.sort(function (a, b)
{
return a-b;
});
console.log(arr);  // [ 2, 15, 110, 'a', 'c', 'd' ]

数组截取

数组截取不会改变原数组。

1
2
3
4
5
var arr = [15,2,110,78,65,100];
console.log(arr.slice(1));  // [ 2, 110, 78, 65, 100 ]
console.log(arr.slice(1,3));  //前闭后开 [ 2, 110 ]
console.log(arr.slice(1,-1)); // 去掉头尾 [ 2, 110, 78, 65 ]
console.log(arr); //原数组不变 [ 15, 2, 110, 78, 65, 100 ]

数组拼接

数组拼接会改变原数组。

1
2
3
4
5
6
7
8
9
10
var arr = [15,2,110,78,65,100];
console.log(arr.splice(2)); // [ 2, 110, 78, 65, 100 ]
console.log(arr);  // [ 15, 2 ]

var arr = [15,2,110,78,65,100]; 
console.log(arr.splice(1,3)); // 一个参数为位置,第二个为删除个数 结果为 [ 2, 110, 78 ]
console.log(arr);  // [ 15, 65, 100 ]
var arr = [15,2,110,78,65,100]; 
console.log(arr.splice(2,1,"a",55,"ss"));  // [ 110 ] 从删除的位置添加元素
console.log(arr);  // [ 15, 2, 'a', 55, 'ss', 78, 65, 100 ]

数组映射

数组映射不会改变原数组。

1
2
3
4
5
6
var arr = [15, 2, 110, 78, 65, 100];
console.log(arr.map(function (x)
{
return x+100;
}));  // [ 115, 102, 210, 178, 165, 200 ]
console.log(arr);  // [ 15, 2, 110, 78, 65, 100 ]

数组过滤

数组过滤不会改变原数组。

1
2
3
4
5
6
var arr = [15, 2, 110, 78, 65, 100];
console.log(arr.filter(function (value,index)
{  // 筛选出索引为偶数或者值大于100的元素
return index%2===1||value>100;
}));  // [ 2, 110, 78, 100 ]
console.log(arr);  // [ 15, 2, 110, 78, 65, 100 ]

数组判断

1
2
3
4
5
6
7
8
9
10
11
var arr = [1, 5, 7, 6, 3, 54, 55];
console.log(arr.every(function (value)
{  // 判断是否所有元素都大于10
return value > 10;
})); // false

var arr = [1, 5, 7, 6, 3, 54, 55];
console.log(arr.some(function (value)
{  // 判断是否有元素大于0
return value > 10;
}));  // true

reduce

每次的结果作为第一个参数。

1
2
3
4
5
6
var arr = [1, 5, 7, 6, 3, 54, 55,4];
console.log(arr.reduce(function (value1,value2)
{  // 求最大值
return value1>value2?value1:value2;
}));
console.log(arr);  // 55

数组检索

1
2
3
4
5
6
var arr = [1, 5, 7, 6, 3, 7,54, 55,4,7];
console.log(arr.indexOf(7))  // 从左向右查找   2
console.log(arr.indexOf(7,3));  // 第二个参数表示查找位置  5
console.log(arr.indexOf(7,-2)); // 从倒数第二个元素开始查找 9
console.log(arr.lastIndexOf(7)); //从右向左查找  9
console.log(arr.lastIndexOf(7,-2)); //从右向左查找  5

数组判断

1
2
3
4
var arr = [1, 5, 7, 6, 3, 7,54, 55,4,7];
console.log(Array.isArray(arr));  // true
console.log(arr instanceof  Array);  // true
console.log(arr.constructor === Array);  // true
本文由作者按照 CC BY 4.0 进行授权
文章内容