1)JS 自身提供的方式
用于对数据进行简便的操作, 根据方法可以操作的数据类型不同, 形成了不同的对象 -- 内置对象
2)数组
a)基本操作方法 -- 对数组进行修改
从数组最后进行操作
1)数组. push(); 传入参数 添加到数组最后 返回值 =>新数组
2)数组. pop(); 传入参数 删除最后一个 返回值 =>删除元素
从数组开始进行操作
3)数组. unshift(); 传入参数 添加到数组开始 返回值 =>新数组
4)数组. shift(); 传入参数 删除最开始的一个 返回值 =>删除元素
b)操作方法
1)数组. concat(); 用于数组连接
特性: 不会修改原数组, 返回操作的结果 =>新数组
特殊功能: 进行数组的复制操作
2)数组. slice(start,end) 复制数组中指定部分数据
返回值: 返回值: 获取的结果不含 end 位置的值, 以数组形式返回
特殊功能:
a)不传参数 2, 默认到最后
b)参数可以为负数. 表示从后往前
3)数组. splice(start,len); 截取数组中的指定部分
返回值: 截取元素的部分 数组形式
特殊用法: 数组. splice(start,len,item1,item2,item3..) 将后面的元素放入原数组中被截取的位置上, 个数不需要对应
常用用法: 删除数组中的指定元素
c)位置方法 - IE9 以下不支持
--> 数组. indexof(要查找的元素值, 检索的起始位置索引值(默认是 ==0)) --- 查找数组中置顶元素的索引值
返回值: 找到 =>返回索引值 没有找到 =>-1
数组去重
- var arr = [1, 1, 2, 2, 3, 3, 4, 3, 2, 1, 1, 2, 3, 2, 1];
- var resultArr = [];
- for(var i= 0 ; i<arr.length; i++){
- if(resultArr.indexof(arr[i]===-1){
- resultArr.push(arr[i]);
- }
- }
- console.log(resultArr);
--> 数组. lastIndexOf() 不经常使用
问题: 如果在一个数组中具有多个满足条件的元素, 需要多次使用 indexof
- var arr = ["a", "b", "a", "c", "a", "a", "b", "a", "c", "a", "a", "b", "a", "c", "a", "a", "b", "a", "c", "a", "a"];
- var indexArr = [];// 用于保存找到的索引值
- var index = -1;
- while (arr.indexof("a",index +1) != -1){
- index = arr.indexof("a",index +1 );
- indexArr.push(index);
- }
- console.long(indexArr);
d)排序方法
1)数组. reverse( ) 翻转数组 修改原数组 返回值 =>原数组
2)数组. sort( ) 排序 修改原数组
3)return a-b; 升序 return b-a; 降序
- var arr = [7, 5, 8, 6, 3, 11, 22, 9, 2, 1, 4];
- // 升序的参数形式: function(a,b){return a-b;}
- //arr.sort(function (a,b) {
- // return a-b;
- //});
- // 降序的参数形式: function(a,b){return b-a;}
- arr.sort(function (a, b) {
- return b - a;
- });
- console.log(arr);
模拟 sorted
模拟:
- function sorted(arr, fn) {
- //fn = function (a,b) {
/$/ 使用时需要的是差的计算结果
- // return a-b;// 返回的是当前项减后项的差
- // return b-a;// 返回的是后项减当前项的差
- //}
var j, temp;
- for (var i = 0; i <arr.length - 1; i++) {
- for (j = 0; j < arr.length - 1 - i; j++) {
- // 比較当前项和后项的大小关系:
- // 升序的判断条件 : arr[j]> arr[j + 1]
- // arr[j] - arr[j+1]> 0;
- // 降序的判断条件 : arr[j] <arr[j + 1]
- // arr[j+1] - arr[j]> 0;
- // 结论: 升序和降序的控制实际上是由比較运算前面的操作数决定的.
- // 如果是当前项 - 后项的差, 升序.
- // 如果是后项 - 当前项的差, 降序.
- if (fn(arr[j], arr[j + 1])> 0) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
- }
- }
- }
- }
- var arr = [1, 6, 3, 5, 4, 2];
- sorted(arr, function (a, b) {
- // 使用时需要的是差的计算结果
- // return a-b;// 返回的是当前项减后项的差
- return b - a;// 返回的是后项减当前项的差
- });
- console.log(arr);
3)字符串
a)概念
字符串就是基本数据类型, 不是对象; JS 帮我们创建了基本包装类型对象, 并且调用了其属性和方法; 我们一定不要自己书写基本包装类型对象
b)转换为字符串
1)数组. toString( );
- 2)join( );
- //var arr = [1,2,3,4,5];
- //2.1 如果不传参数, 形式和 toString 相同
- //console.log(arr.join());//"1,2,3"
- //2.2 传入参数时, 会按照传入的字符串将数组的所有元素进行连接
- //console.log(arr.join("-"));//"1-2-3"
- //2.3 传入空字符串, 可以返回元素相连的字符串
- //console.log(arr.join(""));//"123"
c)基本属性
1)字符串. length 字符串长度
2)索引
a)字符串[索引值] IE9 以下不支持
b)字符串. charAt(索引值)
d)字符串方法 -- 字符串具有不可变性
1)字符串. concat( ) 字符串连接(不常用, 一般使用 +)
2)字符串. slice(start,end) 拷贝字符串中的指定部分字符
3)字符串. substring(start,end) 截取字符串中的指定字符(不常用)
不支持负数参数 (负数默认是 0 , 参数 1> 参数 2 => 交换两个参数的值)
4)字符串. substr (start,len) 截取字符串中的指定长度的部分字符
e)大小写转换
)字符串. toUpperCase(转为大写)
)字符串. toLowerCase(转为小写)
f)位置方法 -- 没有兼容性
1)字符串. indexOf("要查找的字符串", 起始位置索引值);
如果参数 1 是多个字符, 会返回首字母所在的位置(前提是整体必须存在)
2)字符串. LastindexOf("要查找的字符串", 起始位置索引值);
g)替换方法
字符串. replace("要替换的字符串","替换为什么字符串");
replace 在使用时一次只能替换从左往右的第一个指定字符.
替换次数不定时, 使用 while 循环
- var str = "adbcddefdg";
- while(str.indexOf("d") != -1){
- str = str.replace("d", "z");
- }
- console.log(str);
l)转换方法
字符串. split() 将字符串转换为数组结构
按照传入的字符串参数将字符串 str 进行分割操作
var str = "da-bac-ade-af-ag-dwd";
a) 什么也不传, 整体会变成一个数组, 字符串为数组的第一个元素(不常用)
console.log(str.split());//["abcdefg"]
b) 传入空字符串, 转换为数组形式, 每个字符为数组中的一个元素
console.log(str.split(""));//["a","b","c","d","e","f","g"]
c) 传入某个字符串
console.log(str.split("-"));
e)常用的使用方法 -- 与数组方法 join 进行结合
1) 删除字符串中的所有 a
- var str = "dahuwaadawadaukbawaadua";
- var arr = str.split("a");
- console.log(arr.join(""));*/
2) 将字符串中的所有 a 替换为 z
- var str = "dahuwaadawadaukbawaadua";
- var arr = str.split("a");// 将 a 去除
- console.log(arr.join("z"));// 将 z 添加
4)Date 对象
1 创建方式 ---var date = new Date();
1.1 当前时间 ---var date = new Date();
1.2 具体的某一个时间 ---var date = new Date("2015-1-1 12:12:12");
如果传入的参数为数值, 月份是从 0 开始, 如果月份大于 11, 可能会跨年 ---var date = new Date(2015,13,1,12,12,12);--console.log(date);
2 date 对象的方法 --- 作用: 用于获取日期中的某个部分
a)获取年份 ---console.log(date.getFullYear());
b)获取月份: 月份从 0 开始, 使用时注意要加 1---console.log(date.getMonth()+1);
c)获取日 ---console.log(date.getDate());
d)获取星期: 星期是从 0 开始的, 但是 0 表示周日 ---console.log(date.getDay());
e)获取小时 --- console.log(date.getHours());
f)获取分钟 --- console.log(date.getMinutes());
g)获取秒 ---console.log(date.getSeconds());
h)获取毫秒: 0-999---1 秒 是 1000 毫秒 ---console.log(date.getMilliseconds());
5)Math 对象
1)Math.PI 圆周率
2)Math.max(item1,item2....)计算多个数的最大值
3)Math.min(item1,item2....)计算多个数的最小值
4)向上取整: 取到比当前数值大的最近的一个整数
console.log(Math.ceil(2.3));//3
5)向下取整: 取到比当前数值小的最近的一个整数
console.log(Math.floor(1.3)s);//1
console.log(Math.floor(-1.3));//-2*/
四舍五入
- console.log(Math.round(1.4));
- console.log(Math.round(1.5));
对于负数来说:
下面的计算方式指的是某一位上的数值, 不管符号的问题
如果小于等于 5, 去除小数位, 如果大于 5, 去除小数位并且将整数位的数值扩大 1
- console.log(Math.round(-1.5));//-1
- console.log(Math.round(-1.6));//-2
6)Math.random() 获取随机数 [0.1)
console.log(Math.random());
传入的参数值需要是弧度, 可能会出现精度的问题, 后期在使用时进行处理即可
7)Math.PI 表示的为 180 度的弧度 Math.PI/180 1 弧度
8)正弦值 console.log(Math.sin(Math.PI / 180 * 60));
9)余弦值: console.log(Math.cos(Math.PI / 180 * 60));
10)正切值: console.log(Math.tan(Math.PI / 180 * 45));
来源: https://www.cnblogs.com/AmorR/p/8687652.html