欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组学习.

程序员文章站 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);

原型方法
未完待续…

相关标签: javascript