zoukankan      html  css  js  c++  java
  • JavaScript之Number、String、Array常用属性与方法手册

    Number

    isFinite函数

    Number.isFinite() 方法用来检测传入的参数是否是一个有穷数(finite number)。

    语法:

    Number.isFinite(value)

    例:

    Number.isFinite(Infinity);  // false
    Number.isFinite(NaN);       // false
    Number.isFinite(-Infinity); // false
    
    Number.isFinite(0);         // true
    Number.isFinite(2e64);      // true
    
    Number.isFinite('0');       // false, 全局函数 isFinite('0') 会返回 true

    Polyfill

    Number.isFinite = Number.isFinite || function(value) {
        return typeof value === "number" && isFinite(value);
    }

    parseInt()

    Number.parseInt() 方法可以根据给定的进制数把一个字符串解析成整数

    语法:

    Number.parseInt(string[, radix])

    string 必需。要被解析的字符串。
    radix 可选。

    • a.表示要解析的数字的基数。该值介于 2 ~ 36 之间。
    • b.如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 "0x""0X" 开头,将以 16 为基数。
    • c.如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN

    例1:

    // radix为指定基数,说明字符串为多少进制的数字表示。
    let strObj = '0110';
    console.log(Number.parseInt(strObj, 2)); // 6
    console.log(Number.parseInt(strObj, 10)); // 110

    例2:["1", "2", "3"].map(parseInt)的结果

    ["1", "2", "3"].map(parseInt)相当于[parseInt("1", 0), parseInt("2", 1), parseInt("3", 2)],parseInt("3", 2) 的第二个参数是界于 2-36 之间的,之所以返回 NaN 是因为 字符串 "3" 里面没有合法的二进制数,所以 NaN。

    parseFloat()

    parseFloat方法用于将一个字符串转为浮点数。

    parseFloat('3.14') // 3.14

    如果字符串符合科学计数法,则会进行相应的转换。

    parseFloat('314e-2') // 3.14
    parseFloat('0.0314E+2') // 3.14

    如果字符串包含不能转为浮点数的字符,则不再进行往后转换,返回已经转好的部分。

    parseFloat('3.14more non-digit characters') // 3.14

    parseFloat方法会自动过滤字符串前导的空格。

    parseFloat('	v
    12.34
     ') // 12.34

    如果参数不是字符串,或者字符串的第一个字符不能转化为浮点数,则返回NaN。

    parseFloat([]) // NaN
    parseFloat('FF2') // NaN
    parseFloat('') // NaN

    上面代码中,尤其值得注意,parseFloat会将空字符串转为NaN

    这些特点使得parseFloat的转换结果不同于Number函数。

    parseFloat(true)  // NaN
    Number(true) // 1
    
    parseFloat(null) // NaN
    Number(null) // 0
    
    parseFloat('') // NaN
    Number('') // 0
    
    parseFloat('123.45#') // 123.45
    Number('123.45#') // NaN

     toFixed()

    方法使用定点表示法来格式化一个数。

    语法:

    numObj.toFixed(digits)

    参数说明:

    digits:小数点后数字的个数;介于 0 到 20 (包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0。
    var a=2.1512131231231321;  
    

    String

    substring()

    定义和用法:substring() 方法用于提取字符串中介于两个指定下标之间的字符。

    语法:

    stringObject.substring(start,stop)
    • start:必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
    • stop:可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。

    返回值:一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stopstart

    substring() 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符。

    如果参数 startstop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。如果 startstop 大,那么该方法在提取子串之前会先交换这两个参数。

    与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数。

    var str="Hello world!"
    console.log(str.substring(3)); //lo world!
    console.log(str.substring(3,7));//lo w

    substr()

    substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。

    语法:

    stringObject.substr(start,length)

    参数:

    • start:必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
    • length:可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。

    返回值:一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。

     注释:substr() 的参数指定的是子串的开始位置和长度,因此它可以替代 substring() 和 slice() 来使用。
    重要事项:ECMAscript 没有对该方法进行标准化,因此反对使用它。
    重要事项:在 IE 4 中,参数 start 的值无效。在这个 BUG 中,start 规定的是第 0 个字符的位置。在之后的版本中,此 BUG 已被修正。

    例如:

    var str="Hello world!"
    console.log(str.substr(3,7)) //lo worl

    charAt()

    定义和用法:charAt() 方法可返回指定位置的字符。

    请注意,JavaScript 并没有一种有别于字符串类型的字符数据类型,所以返回的字符是长度为 1 的字符串。

    语法:

    stringObject.charAt(index)

    注释:字符串中第一个字符的下标是 0。如果参数 index 不在 0 与 string.length 之间,该方法将返回一个空字符串。

    例子,在字符串 "Hello world!" 中,我们将返回位置 1 的字符:

    var str="Hello world!"
    document.write(str.charAt(1)) //e

     charCodeAt()

    用法:charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数
    语法:

    stringObject.charCodeAt(index)

    参数说明:
    index参数必填,表示字符串中某个位置的数字,即字符在字符串中的下标。
    注:字符串中第一个字符的下标是 0。如果 index 是负数,或大于等于字符串的长度,则 charCodeAt() 返回 NaN
    例如:

    var str="Hello world!"
    document.write(str.charCodeAt(1))
    //结果:101

    fromCharCode() 

    定义和用法:fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。

    语法:

    String.fromCharCode(numX,numX,...,numX)

    numX:必需。一个或多个 Unicode 值,即要创建的字符串中的字符的 Unicode 编码。

    注释:该方法是 String 的静态方法,字符串中的每个字符都由单独的数字 Unicode 编码指定。

    它不能作为您已创建的 String 对象的方法来使用。因此它的语法应该是 String.fromCharCode(),而不是 myStringObject.fromCharCode()。

    例如,我们将根据 Unicode 来输出 "HELLO" 和 "ABC":

    <script type="text/javascript">
    document.write(String.fromCharCode(72,69,76,76,79))
    document.write("<br />")
    document.write(String.fromCharCode(65,66,67))
    </script>

    split()

    语法:

    stringObject.split(separator,howmany)
    • separator:必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
    • howmany:可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

    返回值:一个字符串数组,String.split() 执行的操作与 Array.join() 执行的操作是相反的。

    "2:3:4:5".split(":")    //将返回["2", "3", "4", "5"]
    "|a|b|c".split("|")    //将返回["", "a", "b", "c"]

    如果您希望把单词分割为字母,或者把字符串分割为字符,可使用下面的代码:

    "hello".split("")    //可返回 ["h", "e", "l", "l", "o"]

    若只需要返回一部分字符,请使用 howmany 参数:

    "hello".split("", 3)    //可返回 ["h", "e", "l"]

     toString()

    toString() 方法可把一个逻辑值转换为字符串,并返回结果。

     javascript中的toString()方法,主要用于Array、Boolean、Date、Error、Function、Number等对象。

    (1)Array.toString():将数组转换成一个字符串,并且返回这个字符串。

    描述:当数组用于字符串环境中时,javascript会调用这一方法将数组自动转换成一个字符串。toString()在把数组转换成字符串时,首先要将数组的每个元素都转换成字符串(通过调用这些元素的toString方法)。当每个元素都被转换成字符串时,它就以列表的形式输出这些字符串,字符串之间用逗号分隔。返回值与没有参数的jion()方法返回的字符串相同。

    例如:

    var arr = ['php','mysql','apache'];
    console.log(arr.join()); //php,mysql,apache
    console.log(arr.toString());//php,mysql,apache

    (2)Boolean.toString():将布尔值转换为字符串。

    描述:根据原始布尔值或者Boolean对象的值返回字符串“true”或“false”。

    例如:

    var b = new Boolean();//boolean对象默认值为false
    console.log(b.toString()); //false
    console.log(("chia" == "chia").toString());//true

    (3)Date.toString():将Date对象转换成一个字符串,采用本地时间。

    var today = new Date();
    console.log(today);//Tue Mar 28 2017 09:16:27 GMT+0800 (中国标准时间)
    console.log(today.toString());//Tue Mar 28 2017 09:16:27 GMT+0800 (中国标准时间)
    console.log(today.toLocaleString());//2017/3/28 上午9:16:27

    注意:toLocaleString()是返回采用地方日期使用地方日期格式的规范的字符串。

    (4)Error.toString():将Error对象转换成字符串
    描述:实现定义的字符串。ECMAScript标准除了规定该方法的返回值是字符串外,没有再做其他规定。尤其是,它不要求返回的字符传包含错误名和错误信息。

    (5)Function.toString():把函数转换成字符串

    描述:可以以一种与实现相关的方法将函数转换成字符串。在大多数的实现中,例如ie和firefox,它返回Function关键字、参数列表、函数体部分。

    function add(a,b){
        var a,b,c;
        c = a + b;
        return c;
    }
    console.log(add.toString()); 

    结果:

    function add(a,b){
        var a,b,c;
        c = a + b;
        return c;
    }

    (6)Number.toString():将数字转换为字符串。用它的参数指定的基数或底数(底数范围为2-36)。如果省略参数,则使用基数10。当参数值为2时,返回二进制数。

    var a = 34;
    console.log(a.toString());//34
    console.log(a.toString(2));//100010
    console.log(a.toString(8));//42
    console.log(a.toString(16));//22

     参考地址:http://www.cnblogs.com/muguaworld/archive/2008/07/18/1246338.html

    indexOf()

    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

    语法:

    stringObject.indexOf(searchvalue,fromindex)

    searchvalue:必需。规定需检索的字符串值。

    fromindex:可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。

    indexOf() 方法对大小写敏感!

    如果要检索的字符串值没有出现,则该方法返回 -1。

    <script type="text/javascript">
    var str="Hello world!"
    document.write(str.indexOf("Hello") + "<br />")//0
    document.write(str.indexOf("World") + "<br />")//-1
    document.write(str.indexOf("world")) //6
    </script>

    操作DOM也可能用上:

    var elems=node.getElementsByTagName("*");
     for(var i=0;i<elems.length;i++){
          if(elems[i].className.indexOf(classname)!=-1){ 
    
          }
      }

    lastIndexOf()

    lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。

    语法:

    stringObject.lastIndexOf(searchvalue,fromindex)

    searchvalue:必需。规定需检索的字符串值。

    fromindex:可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的最后一个字符处开始检索。

    lastIndexOf() 方法对大小写敏感!

    如果要检索的字符串值没有出现,则该方法返回 -1。

    var str="Hello world world!"
    console.log(str.lastIndexOf("Hello")); //0
    console.log(str.lastIndexOf("World")); //-1
    console.log(str.lastIndexOf("world")); //12
    console.log(str.lastIndexOf("world",9)); //6

    Array

    Array map()

    定义和用法:map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。map() 方法按照原始数组元素顺序依次处理元素。

    注意:map() 不会对空数组进行检测,不会改变原始数组。

    语法:

    array.map(function(currentValue,index,arr), thisValue)

    参数说明:

    • function(currentValue, index,arr):必须。函数,数组中的每个元素都会执行这个函数,其中函数参数,currentValue:必须,当前元素的值;index:可选。当前元素的索引值;arr:可选。当前元素属于的数组对象。
    • thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。
    var data = [1, 2, 3, 4];
    var arrayOfSquares = data.map(function (item) {
      return item * item;
    });
    alert(arrayOfSquares); // 1, 4, 9, 16

    由于低版本IE9以下不支持,Array.prototype扩展可以让IE6-IE8浏览器也支持map方法:

    if (typeof Array.prototype.map != "function") {
      Array.prototype.map = function (fn, context) {
        var arr = [];
        if (typeof fn === "function") {
          for (var k = 0, length = this.length; k < length; k++) {      
             arr.push(fn.call(context, this[k], k, this));
          }
        }
        return arr;
      };
    }

    扩展,怎样在字符串中使用map

    例:在一个String上使用 map 方法获取字符串中每个字符所对应的 ASCII 码组成的数组

    var map = Array.prototype.map
    var a = map.call("Hello World", function(x) { return x.charCodeAt(0); })
    // a的值为[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]

    由map方法引发的一个题目["1", "2", "3"].map(parseInt)

    通常情况下,map 方法中的 callback 函数只需要接受一个参数(很多时候,自定义的函数形参只有一个),就是正在被遍历的数组元素本身。

    但这并不意味着 map 只给 callback 传了一个参数(会传递3个参数)。这个思维惯性可能会让我们犯一个很容易犯的错误。

    // 下面的语句返回什么呢:
    ["1", "2", "3"].map(parseInt);
    // 你可能觉的会是[1, 2, 3]
    // 但实际的结果是 [1, NaN, NaN]
    
    // 通常使用parseInt时,只需要传递一个参数.但实际上,parseInt可以有两个参数.第二个参数是进制数.可以通过语句"alert(parseInt.length)===2"来验证.
    // map方法在调用callback函数时,会给它传递三个参数:当前正在遍历的元素, 元素索引, 原数组本身.
    // 第三个参数parseInt会忽视, 但第二个参数不会,也就是说,parseInt把传过来的索引值当成进制数来使用.从而返回了NaN.
    
    //应该使用如下的用户函数returnInt
    function returnInt(element){
      return parseInt(element,10);
    }
    
    ["1", "2", "3"].map(returnInt);// 返回[1,2,3]

    提示下parseInt()方法,其语法为:parseInt(string, radix);string为必须参数,被解析的字符串。radix 可选。

    a.表示要解析的数字的基数。该值介于 2 ~ 36 之间。
    b.如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 "0x""0X" 开头,将以 16 为基数。
    c.如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN

    所以:["1", "2", "3"].map(parseInt)相当于[parseInt("1", 0), parseInt("2", 1), parseInt("3", 2)]。parseInt("3", 2) 的第二个参数是界于 2-36 之间的,之所以返回 NaN 是因为 字符串 "3" 里面没有合法的二进制数,所以 NaN。

    案例地址:JavaScript Puzzlers 解密(一):为什么 ["1", "2", "3"].map(parseInt) 返回 [1, NaN, NaN]?

    Array some()

    例:检测数组中是否有元素大于 18:

    var ages = [3, 10, 18, 20];
    
    function checkAdult(age) {
        return age >= 18;
    }
    
    function myFunction() {
        document.getElementById("demo").innerHTML = ages.some(checkAdult);
    }

    结果:true

    some() 方法会依次执行数组的每个元素:

    • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
    • 如果没有满足条件的元素,则返回false。

    注意:
    some() 不会对空数组进行检测。
    some() 不会改变原始数组。
    浏览器支持:IE9以及以上。

    语法:function(currentValue, index,arr)

    详细参考:http://www.runoob.com/jsref/jsref-some.html

    Array filter()

    例:返回数组 ages 中所有元素都大于 18 的元素:

    var ages = [32, 33, 16, 40];
    
    function checkAdult(age) {
        return age >= 18;
    }
    
    function myFunction() {
        document.getElementById("demo").innerHTML = ages.filter(checkAdult);
    }

    结果:32,33,40

    filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

    注意:
    filter() 不会对空数组进行检测。
    filter() 不会改变原始数组。
    浏览器支持:IE9以及以上。

    语法:array.filter(function(currentValue,index,arr), thisValue)

    详细参考:http://www.runoob.com/jsref/jsref-filter.html

    Array indexOf()

    搜索 Array 对象的指定元素并返回该元素的索引。 此函数是静态的,可在不创建对象实例的情况下调用。

    语法:

    var indexVar = Array.indexOf(array, item, start);

    术语

    定义

    array

    要搜索的数组。

    item

    要在数组中查找的对象。

    startIndex

    (可选)指定在数组中搜索的起始元素的索引号。

    返回:

    如果找到 item,则返回表示该元素在数组中的索引位置的编号;否则返回 -1。

    在 Mozilla Firefox 中,如果调用 indexOf 时未设置 item 或将其设置为 undefined,则返回值为 undefined 的第一项的索引。 在同样的情况下,所有其他浏览器都返回 -1。

    使用 indexOf 函数可确定某个元素在数组实例中第一次出现的索引位置。

    下面的示例演示如何使用 indexOf 函数查找指定项的索引位置。 返回的索引是在 item 中指定的项的第一次出现。 再次调用该函数,并指定大于所找到元素的索引的起始索引值,可查找 item 的下一次出现。

    var a = ['red', 'blue', 'green', 'blue'];
    var myFirstIndex = Array.indexOf(a, "blue");
    // View the results: "1"
    alert("myFirstIndex: " + myFirstIndex);
    var mySecondIndex = Array.indexOf(a, "blue", (myFirstIndex + 1) );
    // View the results: "3"
    alert("mySecondIndex: " + mySecondIndex);

    Array includes()(ES6)

    IE浏览器不支持

    includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
    语法:

    arr.includes(searchElement)
    arr.includes(searchElement, fromIndex)

    searchElement:需要查找的元素值
    fromIndex(可选):从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length - fromIndex 的索引开始搜索。默认为 0。

    返回值:一个 Boolean。

    var array1 = [1, 2, 3];
    
    console.log(array1.includes(2));
    // expected output: true
    
    var pets = ['cat', 'dog', 'bat'];
    
    console.log(pets.includes('cat'));
    // expected output: true
    
    console.log(pets.includes('at'));
    // expected output: false

    参考地址:Array.prototype.includes()

    Array find()(ES6)

    IE浏览器不支持

    find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined

    var array1 = [5, 12, 8, 130, 44];
    
    var found = array1.find(function(element) {
      return element > 10;
    });
    
    console.log(found);
    // expected output: 12

    用对象的属性查找数组里的对象

    var inventory = [
        {name: 'apples', quantity: 2},
        {name: 'bananas', quantity: 0},
        {name: 'cherries', quantity: 5}
    ];
    
    function findCherries(fruit) { 
        return fruit.name === 'cherries';
    }
    
    console.log(inventory.find(findCherries)); // { name: 'cherries', quantity: 5 }

    寻找数组中的质数

    function isPrime(element, index, array) {
      var start = 2;
      while (start <= Math.sqrt(element)) {
        if (element % start++ < 1) {
          return false;
        }
      }
      return element > 1;
    }
    
    console.log([4, 6, 8, 12].find(isPrime)); // undefined, not found
    console.log([4, 5, 8, 12].find(isPrime)); // 5

    参考地址:Array.prototype.find()

    Array findIndex()(ES6)

    IE浏览器不支持

    findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。

    var array1 = [5, 12, 8, 130, 44];
    
    function findFirstLargeNumber(element) {
      return element > 13;
    }
    
    console.log(array1.findIndex(findFirstLargeNumber));
    // expected output: 3

    参考地址:Array.prototype.findIndex()

    join()

    join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。

    语法:

    arrayObject.join(separator)  //separator:可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。

    注意:返回的是一个字符串。

    例如:

    <script type="text/javascript">
    var arr = new Array(3)
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    document.write(arr.join("."))
    </script>

    输出:George.John.Thomas

  • 相关阅读:
    JS数组定义及详解
    JS中script词法分析
    JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用
    Java面试(1)-- Java逻辑运算符
    Java面试(3)-- Java关系运算符
    让 history 命令显示日期和时间
    mysql 权限管理
    docker基础
    docker 后台运行和进入后台运行的容器
    expect 自动输入密码
  • 原文地址:https://www.cnblogs.com/moqiutao/p/6408501.html
Copyright © 2011-2022 走看看