一、数组的创建
1、var arrayObj = new Array(); //创建一个数组
2、var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度
注:创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变
3、var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值
// 字面量方式:
// 这个方法也是我们最常用的,在初始化数组的时候 相当方便
var a = [1, 2, 3];
// 构造器:
// 实际上 new Array === Array,加不加new 一点影响都没有。
var a = Array(); // []
var a = Array(3); // [undefined,undefined,undefined]
var a = Array(1,2,3); // [ 3,11,8 ]
二、数组元素的添加
1、push()
arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度
let a = [1,2,3];
let item = a.push('末尾'); // 4
console.log(a); // [1,2,3,'末尾']
2、unshift()
arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度
let a = [1,2,3];
let item = a.unshift('开头'); // 4
console.log(a); // ['开头',1,2,3]
3、splice()
arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。
三、数组的元素的访问
var testGetArrValue=arrayObj[1]; //获取数组的元素值
arrayObj[1]= "这是新值"; //给数组元素赋予新的值
四、数组元素的删除
1、pop()
arrayObj.pop(); //移除最后一个元素并返回该元素值
let a = [1,2,3];
let item = a.pop(); // 3
console.log(a); // [1,2]
2、shift()
arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移
let a = [1,2,3];
let item = a.shift(); // 1
console.log(a); // [2,3]
3、splice()
arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素
语法: array.splice(index,howmany,item1,.....,itemX)
参数:
index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, …, itemX: 可选。向数组添加的新项目。
返回值: 如果有元素被删除,返回包含被删除项目的新数组。
(1)删除元素
let a = [1, 2, 3, 4, 5, 6, 7];
let item = a.splice(0, 3); // [1,2,3]
console.log(a); // [4,5,6,7]
// 从数组下标0开始,删除3个元素
let item = a.splice(-1, 3); // [7]
// 从最后一个元素开始删除3个元素,因为最后一个元素,所以只删除了7
(2)删除并添加
let a = [1, 2, 3, 4, 5, 6, 7];
let item = a.splice(0,3,'添加'); // [1,2,3]
console.log(a); // ['添加',4,5,6,7]
// 从数组下标0开始,删除3个元素,并添加元素'添加'
let b = [1, 2, 3, 4, 5, 6, 7];
let item = b.splice(-2,3,'添加1','添加2'); // [6,7]
console.log(b); // [1,2,3,4,5,'添加1','添加2']
// 从数组最后第二个元素开始,删除3个元素,并添加两个元素'添加1'、'添加2'
(3)不删除只添加:
let a = [1, 2, 3, 4, 5, 6, 7];
let item = a.splice(0,0,'添加1','添加2'); // [] 没有删除元素,返回空数组
console.log(a); // ['添加1','添加2',1,2,3,4,5,6,7]
let b = [1, 2, 3, 4, 5, 6, 7];
let item = b.splice(-1,0,'添加1','添加2'); // [] 没有删除元素,返回空数组
console.log(b); // [1,2,3,4,5,6,'添加1','添加2',7] 在最后一个元素的前面添加两个元素
总结:
数组如果元素不够,会删除到最后一个元素为止
操作的元素,包括开始的那个元素
可以添加很多个元素
添加是在开始的元素前面添加的
(4)根据对象ID,删除对象中对象
//数据源
let list = [{
id:0,
name:'000'
},{
id:1,
name:'111'
},{
id:2,
name:'222'
},{
id:3,
name:'333'
}]
//遍历删除
function deletArrItemFunc(list,deleteID){
for(var i = 0;i<list.length;i++)
{
if(list[i].id===deleteID){
list.splice(i,1)
}
}
return list
}
//调用
var res = deletArrItemFunc(list,2)
console.log(res)
五、数组的截取和合并
1、slice()
arrayObj.slice(start, [end]); //以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素
2、concat()
arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组
六、数组元素的排序
1、reverse()
arrayObj.reverse(); //反转元素(最前的排到最后、最后的排到最前),返回数组地址
let a = [1,2,3];
a.reverse();
console.log(a); // [3,2,1]
2、sort()
arrayObj.sort(); //对数组元素排序,返回数组地址
七、数组的拷贝
1、slice()
arrayObj.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向
2、concat()
arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向
可参考文章