一、数组的创建
// 数组的创建----两种方法
// 1.构造函数创建
var arr1 = new Array();
//var arr1 = new Array(5); //创建的时候指定长度,打印的时候会出现 <2 empty items> //
arr1[0] = 'zhangs';
arr1[1] = 'lisi';
arr1[2] = 'wangw';
console.log(arr1); //运行结果:[ 'zhangs', 'lisi', 'wangw' ]
//2.字面量创建[] 对象{}
var arr2 = ['zs', 'ls', 'ww'];
console.log(arr2);
二、数组的遍历
// 数组的遍历两种
//1. for 遍历
var str = '数组arr4的遍历:';
for (var i = 0; i < arr4.length; i++) {
str += arr4[i];
str += " , ";
}
console.log(str);
// 2. for..in遍历
var str1 = "for...in循环:";
console.log(str1);
for (var k in arr4) {
console.log(arr4[k]);
}
三、数组的深拷贝
// 数组的深浅拷贝
// 深拷贝,两种方法
// 1.push方法
var arr7 = [];
for (var k in arr5) {
arr7.push(arr5[k]);
}
console.log('arr7数组为' + arr7);
// 2.concat方法
var arr8 = arr5.concat(); //数组拼接函数,返回新数组
// var arr8 = arr5.concat(7, 5, 6); //数组拼接函数
console.log('数组arr8为' + arr8);
四、类数组对象
可迭代(iterable)和类数组(array-like)
Iterable 如上所述,是实现了 Symbol.iterator 方法的对象。
Array-like 是有索引和 length 属性的对象,所以它们看起来很像数组。
// 可迭代或类数组对象转换为真数组
var obj = {
'0': 'zs',
'1': 'ls',
'2': "ww",
3: 'zl',
'length': '4'
} //【有索引和长度length才是类数组对象;】
console.log(obj);
console.log(Array.from(obj)); //转换第一种方法
// 运行结果:[ 'zs', 'ls', 'ww', 'zl' ]
var obj_arr = Array.from(obj);
obj_arr.push('zl');
console.log(obj_arr);
//字符串和数组默认可迭代
五、数组类型检测
// 如何检测是数组类型
//1、 instanceof操作符
var arr = [1, 2, 3]; //类数组/可迭代对象
var obj_arr = { '0': 1, length: 1 };
console.log(arr instanceof Array); //判断是否是数组 true
console.log(obj_arr instanceof Array); //false
if (!(obj_arr instanceof Array)) {
obj_arr = Array.from(obj_arr);
}
console.log(obj_arr instanceof Array); //true
// 2.Array.isArray()判断
console.log(Array.isArray(arr)); //true
console.log(Array.isArray(obj_arr)); //true
console.log(typeof arr);
六、序列化
var str1 = arr.toString();
console.log(str1); //zs,ls,ww
//可以split()反序列化,返回一个新数组
var new_arr = str1.split(',');
console.log(new_arr); //运行结果:[ 'zs', 'ls', 'ww' ]
//通过join()将数组通过某个字符拼接转化成字符串
var new_arr2 = arr.join('|');
console.log(new_arr2);//运行结果:zs|ls|ww