数组学习.

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的方法

4.可迭代(iterable)和类数组(array-like)

有两个看起来很相似,但又有很大不同的正式术语。请你确保正确地掌握它们,以免造成混淆。
Iterable 如上所述,是实现了 Symbol.iterator 方法的对象。
Array-like 是有索引length 属性的对象,所以它们看起来很像数组。
!字符串和数组默认是可迭代的对象

5.数组操作

如何检测一个数据是数组类型

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);

6.数组方法

栈和队列方法

栈和队列方法 会改变原数组
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);

操作方法(数组截取拼接)

//arr.concat 返回拼接后的新数组
var arr1 = [1,2,3];
var arr2 = arr1.concat(4,5,6);
console.log(arr2);
//arr.slice 不会改变原数组,返回截取后的新数组
var arr3 = arr2.slice(0,3); 
console.log(arr3);// 1,2,3
// splice会改变原数组,可以替换,可以增加,可以删除
var res = arr2.splice(0,3,8,8,8);
console.log(arr2); // 8 ,8,8,4,5,6
console.log(res); // 1,2,3

位置方法

//位置方法 比较适合去判断数组中是否有某个成员
var arr = [1,2,3,4,5,4,3,2,1];
console.log(arr.indexOf(1)); //0
console.log(arr.lastIndexOf(1)); //8
console.log(arr.indexOf(6)); //-1
// 如何将一个数组去重
var new_arr = [];
function qc(arr){
    for(var k in arr){
    if(new_arr.indexOf(arr[k]==-1)){
        new_arr.push(arr[k]);
    }
}
console.log(new_arr);
}

迭代方法

//数组的迭代方法
// every 全部成员都满足,才会返回true 判断学生是否都满足18岁
var ages = [19,20,21,18,17,19,20];
var res = ages.every(function(v,index,arr){
    return v >= 18; // 返回布尔类型的值'
}
)
console.log(res);// -1
//some 只要有一个成员满足,就会返回TRUE,判断一组学生是否有满足18岁
var res = ages.some(function(v,index,arr){
    return v >= 18; // 返回布尔类型的值
}
)
console.log(res);
//filter 过滤器,获取某一些符合条件的成员,在一组学生中获取满足18岁的成员
var res = ages.filter(function(v,index,arr){
    return v>=18 ; //返回操作结束的结果
})
console.log(res);
//map 数组的遍历方法,有返回值,将所有年龄加一
var res = ages.map(function(v,index,arr){
    return v+1 ; //返回操作结束的结果
})
console.log(res);
// foreach没有返回值
ages.map(function(v,index,arr){
    console.log(v);
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值