JavaScript学习笔记(八)

3.4 内置对象

3.4.1概念
  • JavaScript中提供多个内置对象:String、Math、Array、Date......
3.4.2 Array对象
检测一个对象是否是数组
  • instanceof运算符

      var arr = new Array(1,2,3,4);
      console.log(arr instanceof Array);  // true
    
  • isArray( )方法

      var arr = new Array(1,2,3,4);
      console.log(Array.isArray(arr));
    
toString( )与valueOf( )方法
  • toString( )方法
    把数组转换成字符串,逗号分隔每一项

  • valueOf( )方法
    返回数组对象本身

      var arr = new Array(1,2,3,4);
      console.log(arr.toString()); // 1,2,3,4
      console.log(arr.valueOf()); // [1, 2, 3, 4]
    
常用方法
  • join(separator)方法
    将数组的元素组成一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符,该方法只接收一个参数:即分隔符。

      var arr = [1,2,3,4];
      console.log(arr.join()); // 1,2,3,4
      console.log(arr.join("-")); // 1-2-3-4
      console.log(arr); // [1, 2, 3, 4]
    
  • push( )和pop( )方法
    push( )接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度;
    pop( )数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

      var arr = ["a","b","c","d"];
      var count = arr.push("e","f");
      console.log(count); // 6
      console.log(arr); // ["a", "b", "c", "d", "e", "f"]
      var item = arr.pop();
      console.log(item); // f
      console.log(arr); // ["a", "b", "c", "d", "e"]
    
  • shift( ) 和 unshift( )方法
    shift( ) 删除原数组第一项,并返回删除元素的值, 如果数组为空则返回undefined;
    unshift( ) 将参数添加到原数组开头,并返回数组的长度。

      var arr = ["a","b","c","d"];
      var count = arr.unshift("e","f");
      console.log(count);  // 6
      console.log(arr);  // ["e", "f", "a", "b", "c", "d"]
      var item = arr.shift();
      console.log(item); // e
      console.log(arr);  // ["f", "a", "b", "c", "d"]
    
  • reverse( )方法
    反转数组项的顺序

      var arr = ["a","b","c","d"];
      console.log(arr.reverse()); // ["d", "c", "b", "a"]
      console.log(arr); // ["d", "c", "b", "a"] (原数组改变)
    
  • concat( )方法
    将参数添加到原数组中。这个方法会先copy一个当前数组,然后将接收到的参数添加到这个copy数组的末尾,最后返回新构建的数组。在没有给concat()方法传递参数的情况下,它只是复制当前数组并返回。

      var arr = ["a","b","c","d"];
      newArr = arr.concat(3,5,["哈哈","嘿嘿"]);
      // ["a", "b", "c", "d", 3, 5, "哈哈", "嘿嘿"]
      console.log(newArr);
      console.log(arr); // ["a","b","c","d"] (原数组未被修改)
    
  • indexOf( )和lastIndexOf( )方法
    1.indexOf ( )接收两个参数:要查找的项和(可选的)表示查找起点位置的索引,(从数组的开头(位置 0)开始向后查找)并返回某个指定的字符串值在字符串中首次出现的位置。
    2.lastIndexOf接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中,从数组的末尾开始向前查找。

      var arr = [2,4,6,8,8,4,6,2];
      console.log(arr.indexOf(4)); // 1
      console.log(arr.lastIndexOf(4)); // 5
      console.log(arr.indexOf(4,2)); // 5
      console.log(arr.lastIndexOf(4,4)); // 1
      console.log(arr.indexOf("4")); // -1
    

这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回-1。
在比较第一个参数与数组中的每一项时,会使用全等操作符。

  • forEach()
    这个方法只支持IE8以上的浏览器, 所以如果需要兼容IE8,则不要使用forEach,还是使用for循环来遍历
    使用:
    forEach()方法需要一个函数作为参数
    该函数,由我们创建但是不由我们调用的,称为回调函数
    数组中有几个元素, 函数就会执行几次,每次执行时,浏览器会将遍历到的元素以实参的形式传递进来,我们可以来定义形参,来读取这些内容
    浏览器会在回调函数中传递三个参数
    第一个参数,就是当前正在遍历的元素
    第二个参数,就是当前正在遍历的元素的索引
    第三个参数,就是正在遍历的数组
    格式:
    eg:

      var arr = [11,22,33,44,55,66]
      arr.forEach(function(value , index , obj){
      console.log(index);
      console.log(value);
      // 0
      // 11
      // 1
      // 22
      // 2
      // 33
      // 3
      // 44
      // 4
      // 55
      // 5
      // 66
      	});
    
  • sort( ) 方法
    用于对数组的元素进行排序,默认是按照字符编码的顺序进行排序
    语法:arrayObject . sort(sortby);
    如果想按照其他标准进行排序,就需要提供比较函数,比较函数应当具有两个参数,返回值如下
    若a<b,在排序后的数组中,a应该出现在b之前,则返回一个小于0的值
    若a=b,则返回0
    若a>b,则返回一个大于0的值
    eg1:

      arr = ["George","John","Thomas","James","Adrew","Martin"];
      console.log(arr); 
      // ["George", "John", "Thomas", "James", "Adrew", "Martin"]
      console.log(arr.sort()); 
      // ["Adrew", "George", "James", "John", "Martin", "Thomas"]
    

eg2:

arr = ["10","5","40","25","1000","1"]
console.log(arr); 
// ["10", "5", "40", "25", "1000", "1"]
console.log(arr.sort()); 
// ["1", "10", "1000", "25", "40", "5"]

eg3:升序排序

arr = [8,5,6,3,2,4,9,6,5,7];
function b2s(a,b) { // 定义排序函数
    return a-b ;
}
console.log(arr.sort(b2s));
ES6新增方法:
  • map( ) 方法
    “映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
    eg:

      var arr = [1, 2, 3, 4, 5];
      var arr2 = arr.map(function(item){
      return item*item;
      	});
      console.log(arr2); //[1, 4, 9, 16, 25]
    
  • filter( ) 方法
    “过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。
    eg:

      var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
      var arr2 = arr.filter(function(x, index) {
      return index % 3 === 0 || x >= 8;
      	}); 
      console.log(arr2); //[1, 4, 7, 8, 9, 10]
    
  • every(且) 方法
    判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。
    eg:

      var arr = [1, 2, 3, 4, 5];
      var arr2 = arr.every(function(x) {
      return x < 10;
      }); 
      console.log(arr2); //true
      var arr3 = arr.every(function(x) {
      return x < 3;
      }); 
      console.log(arr3); // false
    
  • some( 或) 方法
    判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。
    eg:

      var arr = [1, 2, 3, 4, 5];
      var arr2 = arr.some(function(x) {
      return x < 3;
      }); 
      console.log(arr2); //true
      var arr3 = arr.some(function(x) {
      return x < 1;
      }); 
      console.log(arr3); // false
    
3.4.3 Math对象
概念

Math对象不是构造函数,它具有数学常数和函数的属性和方法,都是以静态成员的方式提供

常用方法

- Math.PI
表示的圆周率
- Math.abs()
计算一个数的绝对值
- Math.ceil()
对一个数进行向上取整,小数位只要有值就自动进1
- Math.floor()
对一个数进行向下取整,小数部分会被舍掉
- Math.round()
对一个数进行四舍五入取整
- Math.random()
可以用来生成一个0-1之间的随机数
Math.random()x:生成一个0-x之间的随机数
Math.random()
(y-x)+x:生成一个x-y之间的随机数
- Math.max()
获取多个数中的最大值
- Math.min()
获取多个数中的最小值
- Math.pow(x,y)
返回x的y次幂
- Math.sqrt()
对一个数进行开方运算

其他方法

在这里插入图片描述

静态成员与实例成员

静态成员:由构造函数直接访问到的属性和方法。
实例成员:由构造函数创建出来的对象能直接访问的属性和方法,包括:对象本身 以及原型中的所有的属性和方法。

注意点

实际开发中一般不太用Math对象而是用Underscore.js库来对函数或数值进行操作

3.4.4 String对象
概念

字符串中所有的方法,都不会改变字符串本身(字符串本身是不可变得),操作完会返回一个新的字符串

性能问题

拼接大量字符串时,会有耗费性能大问题,一般不使用字符串自身的方法,而是使用服务器渲染或是模板引擎

常用方法

1.获取字符串中字符的个数
str.length
2.字符方法
charAt( ) // 获取指定位置处的字符串
eg:str.charAt( 0)
charCodeAt( ) // 获取指定位置处字符的ASCII码
通过下标获取 // HTML5,IE8+支持和charAt( ) 等效
3.字符串操作方法
concat( ) // 拼接字符串,等效于 +
slice( ) // 从start位置开始,截取到end位置,end取不到
substring( ) // 从start位置开始,截取到end位置,end取不到
substr( ) // 从start位置开始,截取length个字符
4.位置方法
indexOf( ) // 返回指定内容在原字符串中的位置
lastIndexOf( ) // 返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
5.去除空白
trim( ) // 只能去除字符串前后的空白
6.大小写转换方法
toUpperCase( ) // 转换大写
toLowerCase( ) // 转换小写
7.其他
search( ) // 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串
split( ) // 用于把一个字符串分割成字符串数组
语法:

stringObject.split(separator,howmany);

separator >>>>>> 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject
howmany >>>>>> 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
注意点:
如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值