concat合并的数组会有顺序么_js中的数组对象和 Math对象

5c0eb26138af380fb6d5ac1c19cc2420.png

数组对象

创建数组

数组可以存储任意数据类型的数据
存储方式分为字面量方式存储、构造函数方式存储
数据类型:5基1复
5基本:number、string、boolean、null、undefined
1复杂:object、function,array

var now = new Date();  //构造函数方式var arr = new Array();  //构造函数方式

例如:

//1、字面量方式创建var arr = [1,2,'s',[],{}];console.log(arr);//2、构造函数方式创建var arr1 = new Array(1,2,3,4);console.log(arr1);//如果参数只有一个并且是number类型,这个参数表示创建数组的个数var arr2 = new Array(4);console.log(arr2);//3、遍历数组var arr3 = [1,2,3,4,5,6,7,8,9];for(var i = 0;i

数组方法:添加、删除

添加元素
push:在数组的末尾添加元素,方法中可以传入多个值,值就是要添加的数组中的值,返回数组的总长度
unshift :和push方法方向相反,push是在数组的末尾添加,unshift是在数组的开头添加元素,返回数组的总长度删除元素 无参数
pop:在数组的末尾删除一个元素,该方法没有参数,返回被删除的元素
shift:在数组的开头删除一个元素,返回被删除的元素,该方法没有参数

var arr = ['a','b','c','d'];//1、push方法:参数可以有多个值,末尾添加元素 var n = arr.push('e','f');console.log(n);//返回当前数组的长度console.log(arr);//2、pop方法:在末尾删除一个元素,没有参数var del = arr.pop(); //返回被删除的元素console.log(del);console.log(arr);//3、unshift方法:在头部添加元素var cd = arr.unshift('g','h');//shift 在头部删除一个元素,返回被删除的元素var del1 = arr.shift(); console.log(cd);//返回当前数组的长度console.log(del1);console.log(arr);

我自己是一名从事了多年开发的web前端老程序员,目前辞职在做自己的web前端私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴,想要获取的可以关注我的头条号并在后台私信我:前端,即可免费获取。

splice

集添加数组元素、删除数组元素、替换数组元素功能于一身
index必需。整数,规定添加/删除元素的位置(具体的下标),使用负数可从数组结尾处规定位置。
howmany必需。要删除的项目数量。如果设置为 0,则不会删除项目。
如果要做数组添加第二个参数设置为0
item1, ..., itemX 可选。向数组添加的新项目。(添加,替换)注:
(1) 如果做数组元素添加,需要给该方法添加三个参数,一个都不能少
(2)如果做数组元素删除:
一个参数:表示从当前位置开始删除,删除到末尾
两个参数:第一个参数表示从第几元素的位置开始删除,第二个参数几个元素
(3)如果做数组元素替换,需要给该方法添加三个参数,一个都不能少,说是替换,其实就是删了重填!
Array包含被删除元素的新数组,如果有的话。

var arr = [1,4,6];//① 添加方法arr.splice(2,0,9);console.log(arr);//② 删除方法arr.splice(1);//一个参数表示从当前位置开始删除,删除到末尾arr.splice(1,1);//两个参数表示从第一个元素的位置开始删除,1个元素//③ 替换方法arr.splice(1,1,10);//从数组的第一个元素开始删除,删除1个,用10代替arr.splice(1,2,'c','d');console.log(arr);

数组排序

sort排序以及自定义排序

sort默认从小到大(升序),默认按字符串ASCII编码方式进行排序如果使用自定义排序,需要给sort方法传入参数,参数必须是函数
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。
如果想按照其他标准进行排序,就需要提供比较函数。例如:
情况1:如果数组中是纯数字、位数不相等的情况就需要自定义排序
情况2: 如果数组中的元素是对象形式,也需要自定义排序
该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。
相邻(后一位元素和前一位元素)的两个值作比较
比较函数应该具有两个参数 a 和 b
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。总结:
如果a - b 则从小到大排列 升序
如果 b - a 则从大到小排列 降序
Date.parse(‘具体时间’) 将具体时间转换成对应的时间戳

var arr = [            {"date":'2019-09-01'},            {"date":'2019-09-05'},            {"date":'2019-07-01'},            {"date":'2018-06-01'},        ]        //arr.sort();        arr.sort(paixu('date'));        function paixu(attr){           return function(a,b){            var date = Date.parse(a[attr]);            var date1 = Date.parse(b[attr])            return date-date1;           }        }       console.log(arr);

数组的选择排序和冒泡排序

选择排序
原理:首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕。

var arr = [5,8,7,4];for(var i = 0 ; i < arr.length ; i++){for(var j = i + 1; j< arr.length ; j++){if(arr[i] > arr[j]){var temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}console.log(arr);

冒泡排序
概念:

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。

解析:1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。

2.第一轮的时候最后一个元素应该是最大的一个。

3.按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

数组操作方法

join 将数组按特定标志组合成字符串,默认分隔逗号
split 将字符串按照特定的分隔符转换成数组,可以自定义分隔符位置
reverse 用于颠倒数组中元素的顺序(由大到小或者由小到大相互切换)
concat 用于连接两个或多个数组。注意:该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
indexOf 元素是否存在数组中,在就返回下标,不在就返回-1
lastIndexOf 元素最后一次出现的位置是否存在数组中,在就返回下标,不在就返回-1
toString() 数组转换成字符串

//1.join:将数组按特定标志组合成字符串var arr = [1,2,3];console.log(arr.join('-'));//2.reverse :倒序arr.reverse();console.log(arr);//3.concat:组合数组,返回一个新的数组,注意concat的数组顺序var arr2 = ['a','b','c'];console.log(arr.concat(arr2));//4.indexOf : 元素是否存在数组中,在---返回下标,不在-1var arr1 = [1,2,3,'html',5,6,7,8];if(arr1.indexOf("html")!=-1){arr1.splice(arr1.indexOf("html"),1);}console.log(arr1);

数组迭代方法

every
针对数组元素做些判断。
总结:该方法只有判断的功能并没有获取具体的功能!!!
① 如果数组中跟条件进行比较 检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检测。
②如果所有元素都满足条件,则返回 true。
语法格式:

数组名.every(function(值,下标){检索条件})或者数组名.every(函数名)function 函数名(value){}

some
针对数组元素做些判断,如果结果有一个为true 则返回的结果为true
语法格式:

数组名.some(function(值,下标){})或者数组名.some(函数名)function 函数名(value){}

filter
针对数组元素做些判断,满足条件的元素,会组成一个新的数组,并且返回
语法格式:

数组名.filter(function(值,下标){})或者数组名.filter(函数名)function 函数名(value){}

map
返回一个新的数组,数组中的元素为原始数组元素调用函数处理后的值,按照原始数组元素顺序依次处理元素
语法格式:

数组名.map(function(值,下标){})或者数组名.map(函数名)function 函数名(value){}

forEach
没有返回值,就是一个简单的循环
语法格式:

数组名.forEach (function(值,下标){})

Math对象

Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math()
像Math.sin() 这样的函数只是函数,不是某个对象的方法。
无需创建它,通过把 Math 作为对象使用就可以调用其所有属性和方法。
语法结构:Math.sin()....

数学对象方法

floor向下取整(去掉小数部分)
ceil向上取整 只要有小数就进位
abs绝对值(绝对值是指一个数在数轴上所对应点到原点的距离) 默认用||表示正数的绝对值= 正数负数的绝对值= 正数
pow幂 例如:3的3次幂
sqrt 开根号60 = 4*15 = 2倍根号15
random 随机数0-1 但是不包括1
round 四舍五入

//Math.floor 向下取整 去掉小数部分console.log(Math.floor(4.666));//Math.ceil 向上取整 只要有小数就进位console.log(Math.ceil(5.001));//Math.round 四舍五入console.log(Math.round(3.69));//Math.abs 绝对值console.log(Math.abs(100));//Math.pow 幂console.log(Math.pow(3,2));//Math.sqrt 开根console.log(Math.sqrt(60));//Math.random 随机数console.log(Math.random() * 10);console.log(Math.random() * 20 + 30);
6b5a40b3e60047930fc6e6e781ac281e.png

原文链接:https://www.jianshu.com/p/6a9c8cb8bf30

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值