前言

最近在使用React技术栈时并没有选用jQuery,想借此巩固一下原生API,提高原生开发能力,毕竟这才是内功。

概述

本文总结了JavaScript常用函数,这些函数包括Array常用函数以及String常用函数

JavaScript原生函数

Array常用函数

  • isArray() -判断某个值是不是数组类型
1
2
3
if(Array.isArray(value)){
//对数组进行操作
}
  • join("分隔符")
1
2
var a = [1,2,3,4,5]; 
var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5"
  • 栈方法

    • push() -可以接受任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度:
    1
    2
    3
    4
    var colors = new Array();
    var count = colors.push("red","green");
    console.log(colors);//["red","green"]
    console.log(count);//2
  • pop() -从数组末尾移除最后一项,减少数组length值,然后返回移除的项

    1
    2
    3
    var item = colors.pop();
    console.log(item);//"green"
    console.log(colors.length);//1
  • 队列方法

    • shift() -移除数组的第一项并返回该项,同时将数组长度减一

      1
      2
      3
      var item = colors.shift();
      console.log(item);//"red"
      console.log(colors.length);//1
    • unshift() -在数组前端添加任意个项并返回新数组的长度

    1
    2
    var count = colors.unshift("yellow","black");
    console.log(colors);//["yellow","black","red","green"]
  • 重排序方法

    • reverse() -反转数组项的顺序
    1
    2
    var values = [1,2,3,4,5];
    console.log(values.reverse());//5,4,3,2,1
  • sort() -默认情况下按升序排列数组项,即最小的值在前。为了实现排序,sort方法会调用每个数组项的toString(),然后比较字符串,以确定排序。即使数值项是数字,比较的也是字符串,这通常不是最佳方案,因此sort()可以接受一个比较函数作为参数,返回经过排序后的数组

    1
    2
    3
    4
    5
    6
    7
    var values = [0,1,5,10,15];
    console.log(values.sort());//0,1,10,15,5

    function compare(value1,value2){
    return value2 - value1;
    }
    console.log(values.sort(compare));//0,1,5,10,15
  • 操作方法

    • concat() -合并数组的意思,可以接受n个字符串或数组。
    1
    2
    3
    var colors = ["red","green","pink"];
    var color2 = colors.concat("bliue",["black","yellow"]);
    //["red","green","pink","blue","black","yellow"]

    创建一个数组副本,然后将接受到的参数添加到副本末尾,最后返回新构建的数组,原数组不会受到影响

  • slice() -切数组的意思,接受一到两个数值型参数表示切下的起始结束位置

    1
    2
    3
    var colors = ["red","green","pink"];
    var color1 = colors.slice(1);//["green","pink"]
    var color2 = colors.slice(1,2); //["green"]

    slice()同样不会对原数组产生影响,它会创建一个副本操作后返回。参数可以为负数。

  • splice() -剪接的意思,可以实现数组的删除、插入、替换
    splice(起始位置,删除的项数,插入的项(可以多个项,可选))
    返回从原始数组中删除的项,对原数组直接操作

    1
    2
    3
    var colors = ["red","green","pink"];
    var color1 = colors.splice(0,1);//["green","pink"],删除第一项
    var color2 = colors.splice(1,0,"black"); //["green",“black”,"pink"]
  • indexOf() -返回查找的项的位置,接受两个参数,indexOf(要查找的项(可选),查找起点位置索引),它会使用===来查

    1
    2
    3
    4
    var colors = ["red","green"];

    console.log(colors);//["red","green"]
    console.log(color2);/
  • 迭代方法
    以下每个迭代函数都会接受两个参数,一个是要在每一项运行的函数和运行在该函数的作用域对象——影响this的值,为数组的每一项运行的给定函数接受三个参数:function(数组的项,该项在对象的位置,数组本身){}

    • every() -如果该函数对每一项都返回true,则返回true
    • filter() -返回该函数会返回true的项组成的数组
    • forEach() -单纯运行给定函数,无返回值
    • map() -返回给定函数运行在数组中的每个项的结果组成的数组
    • some() -如果该函数对任一项返回true,则返回true
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
      var values = [1,2,3,4,5];
    console.log(values.every(function(item){
    return (item>2);
    }));//false

    console.log(values.some(function(item){
    return (item>2);
    }));//true

    console.log(values.filter(function(item){
    return (item>2);
    }));//[3,4,5]

    console.log(values.map(function(item){
    return (item*2);
    }));//[2,4,6,8,10]

    console.log(values.forEach(function(item){
    //执行某些操作
    }));
  • 归并方法

    • reduce() -浓缩的意思,接受一个给定函数(function(pre,cur,index,array){})和作为归并基础的值(可选),迭代数组所有项,返回一个构建的值
    1
    2
    3
    4
    var values = [1,2,3,4,5];
    console.log(values.reduce(function(pre,cur,index,array){
    return pre + cur;
    }));//15

String常用函数

  • 查找方法

    • 字符串方法
      • charAt(n)返回字符串中第n(0~length-1)个字符;
      • charCodeAt(n)返回字符串中第n个字符的Unicode编码;
      • fromCharCode(0或多个字符的Unicode编码)返回根据字符编码创建的字符串
    • 位置方法
      • indexOf(要查找的字符串,开始查找位置(可选))返回找到的子串首次出现的索引或-1(未找到)。可以用于数组查找项,不能查找对象。
    • 匹配方法
      • match(正则表达式)返回存放匹配结果的数组,正则如果没有加全局标记g那么这个数组会有个input属性,它指向调用match()的字符串对象.未找到返回null.
    1
    2
    3
    4
    5
    var str = "hello,world";
    str.match("he");["he", index: 0, input: "hello,world"]
    str.match(/he/);//["he", index: 0, input: "hello,world"]
    str.match(/he/g);//["he"]
    str.match(/l/g);//["l", "l", "l"]
  • search(正则表达式)返回字符串中第一个与正则表达式相匹配的子串的索引,忽略全局标记glastIndex属性

    1
    2
    3
    4
    5
    var str = "hello,world";
    str.search("he");//0
    str.search(/he/);//0
    str.search(/he/g);//0
    str.match(/l/g);//2
  • replace(正则(字符串),替换文本或函数)创建一个原字符串副本,替代后返回

    1
    2
    3
    var str = "hello,world";
    str.replace(/l/g,"b");//"hebbo,worbd"
    console.log(str);//"hello,world"
  • split(分隔符,(数组长度))返回根据指定分隔符将字符串分割成多个子串组成的数组,这个分隔符必须是原字符串里的某个字符,否则返回原字符串

    1
    2
    3
    var str = "hello,world";
    str.split("");//["h", "e", "l", "l", "o", ",", "w", "o", "r", "l", "d"]
    str.split("o");//["hell", ",w", "rld"]
  • 操作方法

    • concat(string,...)返回把所有参数都连接到原字符串后形成的字符串
    • slice(剪切的起始位置,结束位置)返回剪切后的字符串,创建副本,原字符串不变
    • substring()功能与slice相同,不同的是参数不能为负
    • trim()清楚字符串(注意不是字符)前后的空格
  • 编码方法

    • escape(string)unescape(string)返回字符串常规编码(解码)
    • encodeURI(string)decodeURI(string)URI字符串编码与解码
  • 转换方法

    • toUpperCase()toLocaleUpperCase()转为大写
    • toLowerCase()toLocaleLowerCase()转为小写