数组学习.
程序员文章站
2024-02-24 23:46:16
...
1.数组基础
1.数组里可以储存任意数据类型
2.Arr.length返回数组长度
3.增加数组 Arr[3]=4;
Arr[arr.length]=5;(最大下标)
可以使用length实现动态添加效果
4.数组也是一个引用数据类型
构造函数的创建 (字面量创建[] 对象{} )
var arr1 = new Array(5);
arr1[0] = '张三';
arr1[1] = '李四';
arr1[2] = '王五';
console.log(arr1);
console.log(arr1.length)`
创造一个数组包含1-100 ( 循环创建)
var nums = [];
for(var i=0;i<100;i++){
nums[i] = i+1;
}
console.log(nums);
数组遍历(将每一个成员提取一次)// for循环 for…in循环
for(var i=0;i<nums.length;i++){
nums[i] = '数字:'+ nums[i];//可以做很多操作
}
console.log(nums);
for( var k in nums ){
console.log( nums[k]);//可以做很多操作
}
数组也是引用数据类型 (浅拷贝)
var arr3 = [1,2,3];
var arr4 = arr3;
arr4[3] = 4;
console.log(arr3);
2.数组的深浅拷贝
1.浅拷贝会改变原数组
2.数组实现深拷贝
1. var arr3 = [1,2,3];
var arr5 = [];
for(var k in arr3){
arr5.push(arr3[k]);
}
console.log(arr5);
2. var arr6 = arr3.concat();//数组拼接函数,返回新数组.
3.将可迭代对象或者类数组对象转换成真数组
类数组对象,有下标,有length属性
var obj = {
‘0’:‘12’,
‘1’:‘13’,
‘length’:‘2’
}// 类数组对象
转换方法
console.log(Array.from(obj));//es6的方法
可迭代(iterable)和类数组(array-like)
有两个看起来很相似,但又有很大不同的正式术语。请你确保正确地掌握它们,以免造成混淆。
Iterable 如上所述,是实现了 Symbol.iterator 方法的对象。
Array-like 是有索引和 length 属性的对象,所以它们看起来很像数组。
!字符串和数组默认是可迭代的对象
数组操作
如何检测一个数据是数组类型
console.log(arr instanceof Array);
Array.inArray(array);
//数组类型判断并转换
var obj_arr = {'0':'1','length':'1'};
if(!obj_arr instanceof Array){
obj_arr = Array.from(obj_arr);
}
if(!Array.inArray(obj_arr)){
obj_arr = Array.from(obj_arr);
}
序列化和反序列化
1. JSON方法一般用于对象,数组中有对象也可以用JSON方法
var arr = ['zhangsan','lisi','wangwu'];
var arr_str = JSON.stringify(arr);
console.log(arr_str);
var new_arr = JSON.parse(arr_str);
console.log(new_arr);
!如下,数组中有对象
var arr = [
{
id:0,
name:'sdji',
age:23,
sex:'男'
},
{
id:1,
name:'ssdsdi',
age:23,
sex:'男'
},
{
id:2,
name:'sdaaaai',
age:23,
sex:'男'
}];
2. var num_arr = [1,2,3];
//通过tostring()将数组转成字符串,默认,分割
var str = num_arr.toString();
console.log(str);
//通过join()将数组通过某个字符拼接转化成字符串
var str2 = num_arr.join('|');//1|2|3 即|分割
console.log(str2);
//可以 split反序列化
var new_arr = str.split(',');//字符串方法
console.log(new_arr);
数组方法
栈和队列方法
栈和队列方法 会改变原数组
var arr = [1,2,3];
arr.push在末尾追加元素
arr.push(4);// 1,2,3,4
arr.pop删除最末尾的那个元素
arr.pop();// 1,2,3
arr.unshift在第一项的前面放置元素
arr.unshift(0); // 0,1,2,3
arr.shift删除第一项元素
arr.shift(); // 1,2,3
console.log(arr);
排序方法
反序
arr.reverse(arr);
var num_arr = [1,33,11,113,223,13,23];
console.log(num_arr.sort());//排序 1, 11, 113, 13, 223, 23, 33
sort可以完成正常的排序(传入一个排序的函数)
console.log(num_arr.sort(function(v1,v2){
if(v1>v2)
return 1;
else if (v1<v2)
return -1;
else
return 0;
}));//1, 11, 13, 23, 33, 113, 223
//sort 算法 冒泡排序
for(var i=0;i<arr.length-1;i++){//确定轮数
for(var j=0;j<arr.length-i-1;j++){//确定每次比较的次数
if(arr[j]>arr[j+1]){
tem = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tem;
}
}
}
console.log(arr);
原型方法
未完待续…