数组基本知识总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组基本知识总结相关的知识,希望对你有一定的参考价值。

引用类型:

引用类型通常被叫做类(class)。但在 ECMAScript 2015 版本之前的 javascript 中并没有类的概念,在 JavaScript 中通常叫做对象定义。也就是说,使用引用类型其实就是使用对象。


预定义引用类型:

技术分享

// TODO Date类型 – 创建


创建Date类型标准写法:

其他写法一:

其他写法二:

var d1 = new Date();
console.log(d1);


var d2 = Date();
console.log(d2);


var d3 = new Date;
console.log(d3);



// TODO Date - 获取


获取Date数据类型

使用方法

举例

年份

* getFullYear() - 获取当前年份

* getYear() - 获取距1900年的年份

console.log.(d1.getFullYear()); // TODO 2017
console.log.(d1.getYear()); //TODO 117

月份

* getMonth - 获取的月份是从0开始,正常+1

console.log.(d1.getMonth()+1); //TODO 10

日期

* getDate() - 获取日期

* getDay() - 获取星期

星期日~- 0~6

console.log.(d1.getDate());//TODO 27
console.log.(d1.getDay());//TODO 5

小时

* getHours() - 获取当前小时

console.log(d1.getHours()); // TODO 13

分钟

* getMinutes() - 获取当前分钟

console.log(d1.getMinutes()); //TODO 19

* getSeconds() - 获取当前秒数

console.log(d1.getSeconds()); // TODO 31

毫秒

* getMilliseconds() - 获取当前毫秒

* getTime() - 获取距离197011日的毫秒数

* 实现时间段的计算 , 将当前的毫秒数作为一个标识(唯一,不重复),时间戳

console.log(d1.getMilliseconds()); // TODO 当前毫秒数
console.log(d1.getTime()); // TODO 1509081197319


 

//TODO Math用法 – 不用创建对象,直接执行


举例

说明

console.log(Math.PI);

// TODO 圆周率π= 3.141592653589793

console.log(Math.floor(3.141592653589793));

//TODO Math.floor()向上取整

console.log(Math.ceil(3.141592653589793));

/TODO Math.ceil()向下取整

console.log(Math.round(3.541592653589793));

//TODO Math.round()四舍五入

console.log(Math.abs(-1));

//TODO Math.abs() 取绝对值

console.log(Math.max(3,9,21));

// TODO Math.max()取最大值

console.log(Math.min(3,5,1,0));

// TODO Math.min()取最小值

console.log(Math.random());

// TODO Math.random() 生成随机数 范围(0~1

console.log(Math.pow(5,2));

//TODO Math.pow(x,y) 返回xy次幂

console.log(Math.cos(2));

//TODO Math.cos() 返回余弦值

 

//TODO 什么是数组:

数组是值的集合,数组的每个值叫做一个元素,元素在数组中都有一个唯一的位置,位置用数字表示,叫做索引数据。


//TODO 定义数组 :

1.字面量方式

2.构造函数方式

var arr1 = [1,2,3,4,5]; // TODO Array   数组不是原始类型,而是引入类型
console.log(typeof arr1); // object
console.log(arr1 instanceof Array); //true
var arr2 = new Array(1,2,3,4,5); //Array



// 笔试题:以下哪个是错误的 D

// A var a = {};// 空对象

// B var b = [];// 空数组

// C var c = //;// 空的正则表达式

// D var d = ();


//TODO 数组的分类

类型

举例

说明

索引数组

var obj = new Object();
var arr4 = [];
var arr3 = [1,‘string‘,true,undefined,null,obj,arr4];
//TODO 调用数组
console.log(arr3[1]);

*javascript中默认定义的都是索引数组

*数组中可以包含数字,字符串,布尔,undefinednull,对象,数组

关联数组

var arr5 = new Array();
arr5[‘name‘] = ‘zhangwuji‘;
arr5[‘age‘] = 18;
console.log(arr5);
console.log(arr5[‘name‘]);
console.log(arr3.length);
console.log(arr5.length); //TODO 0
console.log(obj instanceof Array);

*javascript的语法中并没有定义关联数组 – 关联数组是一种数据结构,允许你动态的将任意的数值和任意的字符串关联在一起

*关联数组中,arraylength属性失效

*对象不属于数组类型

稀疏数组

var arr6 = new Array(10);
console.log(arr6); // TODO 打印出数组没数据,只有10个位置
arr6[3] = ‘string‘;
console.log(arr6);
console.log(arr6.length);

*数组中的元素个数少 , 遍历稀疏数组时,length属性失效

*构造函数方式定义数组 Array()中传入的参数为1个时 -> 表示数组长度

* 传入多余1个参数构成数组


//TODO 操作数组

var arr7 = [[1,2,3,4,5,6,7,8,9,0];

新增元素

修改元素

删除元素

console.log(arr7.length); //TODO  输出10
//TODO 在第10个位置(末尾)新增一个元素
arr7[arr7.length] = ‘string‘;


arr7[3] = true;
//TODO 将元素4改为true


delete arr7[10];// TODO 删除最后一个元素 - string
//TODO delete删除数组中的元素,只是删除了数据,位置保留了,所以不影响length


//TODO 循环数组 - 遍历数组中的元素 – 当一个位置元素为空,位置在时,遍历为undefined

循环语句 - for为主

for...in

for...of

for (var i = 0 ; i <arr7.length ; i++){
console.log(arr7[i]};
}
for (var i in arr7){
console.log(arr7[i]);
}
for (var i of arr7){
console.log(i);
}//TODO for...of遍历的是值,直接输出这个变量



//TODO 二维数组 – 数组的数组,一个数组被当作元素嵌套在另一个数组中,这种数组结构叫做二维数组。

创建

var arr8 = [[12,14,15],[23,345,67],[34,67,990]];
console.log(arr8);

遍历二维数组 - for循环的嵌套

for (var j = 0 ;j < arr8.length ; j++){
console.log(arr8[j]);
for (var h = 0 ; h <arr8[j].length ; h++){
console.log(arr8[j][h]);


//TODO 检测数组 – 检测是否为数组:

1.typeof[] - 返回值为object - typeof无法检测数组对象

console.log(typeof arr8); // TODO object

2.[]instanceof Array - 返回true

console.log(arr8 instanceof Array); //TODO true

3.Object.prototype.toString.call([]) - 返回[object Array]

console.log(Object.prototype.toString.call(arr8)); //TODO [object Array]

3.方法释义

* TODO  Object - 构造函数 new Object ()
* TODO      * 构造函数具有prototype原型属性
* TODO      * 在原型上,定义一个方法toString()
* TODO      * 方法/函数,都是一个Function类型
* TODO      * Function类型提供的一个方法call()
* TODO      注意 : 这种方法可以准确判断出当前变量的类型

4.Array.prototype.isPrototypeOf([]) - 返回true

console.log(Array.prototype.isPrototypeOf(arr8));//TODO true

5.Array.isArray([]) - 返回true

console.log(Array.isArray(arr8)); //TODO true


//TODO 进出栈方法:

var colors = [‘red‘,‘green‘,‘blue‘];
colors..push(‘yellow‘);

//TODO push()方法 - 需在括号传入添加的元素 - 在数组最后添加元素

colors.pop();

//TODO pop()方法 - 无需在括号种添加参数 - 删除数组最后位置的元素

colors.unshift(‘yellow‘);

//TODO unshift()方法 - 需在括号传入添加的元素 - 在数组第一个位置添加元素

colors.shift();

//TODO shift()方法 - 无需在括号种添加参数 - 删除数组第一个位置的元素



//TODO 数组连接 - concat()方法
var colors1 = [‘red‘,‘green‘,‘blue‘];
var colors2 = colors1.concat(‘yellow‘,[‘pink‘,1,true,null]);
console.log(colors2); //TODO [ ‘red‘, ‘green‘, ‘blue‘, ‘yellow‘, ‘pink‘, 1, true, null ]

//TODO 转换方法
var fruits = [‘apple‘,‘lemon‘,‘strawberry‘];
console.log(fruits.toString()); //TODO apple,lemon,strawberry 将数组转换成字符串
var b = fruits.slice(1); //TODO [ ‘lemon‘, ‘strawberry‘ ] 选取数组从1开始的部分并返回一个新数组
console.log(b);
var c = fruits.splice(0,1);
console.log(c); //TODO 删除apple
console.log(fruits.valueOf()); //TODO 返回组对象的原始值,splice()方法删除了元素原数组发生改变,返回的原始值也跟着改变


//TODO 数组的排序方法:

var values = [1,‘string‘,23,3,56,7,‘text‘];
// TODO reverse()和 sort()方法都是改变了原数组的顺序

// TODO reverse()方法 - 反转原数组的顺序

var result = values.reverse();

// TODO sort()方法 - 将原数组按照首字母顺序进行排列,阿拉伯数字采用ascii码排序

var result1 = values.sort();


// TODO 利于sort()方法实现数组的由小到大排序:

原理:

// TODO sort()方法接收一个回调函数 - 自定义排序的规则 functiona,b
// TODO {return a > b //从小到大   return a < b //从大到小 }

实现:

var arr9 = [2,5,13,0,53,123];
arr9.sort(function (a,b) {
return a>b;
});
console.log(arr9); //TODO [ 0, 2, 5, 13, 53, 123 ]

 

//TODO 数组的操作方法 – 删除、插入、替换:

方法:

slice()方法

举例:

var arr10 = [12,14,35,678,90,64];
var result2 = arr10.slice(1,3);
console.log(result2);
var result3 = arr10.slice(1);
console.log(result3);
var result4 = arr10.slice(1,-1);
console.log(result4);
var result5 = arr10.slice(-3,-1);

说明:

截取数组数据,(startend)两个参数,end可选

方法:

splice()方法

举例:

var remove =arr10.splice(1,0); // TODO 从位置1开始删除0个元素
var remove1 = arr10.splice(1,0,88); // TODO 位置1后面不删除即为插入,插入元素88
console.log(arr10);
var remove2 = arr10.splice(1,1,99); //TODO 位置1删除,替换元素为99
console.log(arr10);
console.log(remove2);//TODO 返回删除的元素

说明:

spliceindex,howmany,item1...itemN) 三个参数前两个位置和删除数量必填,后面添加元素参数可选


//TODO 位置方法 - 获取数组中指定元素的索引值
var value1 = [1,2,3,5,6,8,9,3,2,1,0];
console.log(value1.indexOf(2)); //TODO 1 从前往后获取索引返回位置
console.log(value1.lastIndexOf(2));//TODO 8 从后往前索引返回位置




























以上是关于数组基本知识总结的主要内容,如果未能解决你的问题,请参考以下文章

js数组遍历方法总结

几个关于js数组方法reduce的经典片段

Go语言技巧之正确高效使用slice(听课笔记总结--简单易懂)

Go语言技巧之正确高效使用slice(听课笔记总结--简单易懂)

Go语言技巧之正确高效使用slice(听课笔记总结--简单易懂)

VSCode自定义代码片段—— 数组的响应式方法