来自 前端技术 2019-09-04 19:43 的文章
当前位置: 六合联盟网 > 前端技术 > 正文

javaScript学习小记

1.测量试验变量的数据类型 ----   typeof
"undefined"            -----             要是这么些值未定义
2.测量检验数字是或不是位于最大数和纤维数以内     -----     isFinite()
var result = Number.MAX_VALUE + Number.MIN_VALUE;
alert( isFinite(result));   //false
3.肯定二个参数是不是"不是数值",它会用尽全力尝试将这些参数调换为数值     ------  isNaN()
alert(isNaN(NaN));           //true
alert(isNaN(10));              //false
alert(isNaN("10"));           //false             
alert(isNaN("blue"));       //true
alert(isNaN(true));           //false
4.非数值调换为数值          ------        Number()   、 parseInt()   、parseFloat()
var num1 = Number("hello world");      //NaN
var num2 = Number(" ");                         //0
var num3 = Number("0000011");          //11
var num4 = Number(true);                      //1

ECMAScript的数组与其余语言中的数组有着非常大的区分。就算ECMAScript中的数组也是邯郸学步列表,不过它数组你的每一种可以保存任何类型的数据。ECMAScript数组的轻重是足以动态调解的。
    成立数组的主题方式有三种。第一种是行使Array构造函数,如下所示:

var num5 = parseInt("0xA");                    //10(十六进制数)
var num6 = parseInt("070");                    //56(八进制数)
var num7 = parseInt("1234blue");          //1234
var num8 = parseInt(" ");                          //NaN
var num9 = parseInt(22.5);                      //22
十六进制钦定基数可不带0x
var num10 = parseInt("AF" ,  16);            //175
var num11 = parseInt("AF");                     //NaN
点名基数
var num12 = parseInt("10" , 2);                     //2(按二进制实行剖析)
var num13 = parseInt("10" , 8);                     //8(按八进制举办深入分析)
var num14 = parseInt("10" ,10);                    //10(按十进制举行分析)
var num15 = parseInt("10" , 16);                   //16(按十六进制进行剖析)

复制代码 代码如下:

var num16 = parseFloat("1234blue");         //1234整数
var num17 = parseFloat("0xA");                    //0
var num18 = parseFloat("22.5");                  //22.5
var num19 = parseFloat("22.34.5");            //22.34
var num20 = parseFloat("0980.5");             //980.5
var num21 = parseFloat("3.125e7");           //31250000
5.检查实验数组         ------        instanceof            isArray()
if (value instanceof Array) {
      //假定单一全局实践遭受   ECMAScript3
}
if (Array.isArray(value)) {
      //ECMAScript5
}
6.数组的插入和删除      ------   push()   、pop()    、 shift()   、unshift()
var array = new Array();
push()  :  向数组后面部分增美金素,再次回到新数组的尺寸
var pushLength = array.push("value1","value2");
alert(pushLength);          //2
pop()  :  移除数组最终一项,并赶回移除的项
var item = array.pop();
alert(item);      //value2
unshift()  :  向数组的尾部增美金素,重临新数组的长短
var unshiftLength = array.unshift("value3");
alert(unshiftLength);          //2
shift()  :  移除数组的第一项,并回到移除的项
var itemShift = array.shift();
alert(itemShift);      //value1
7.数组的操作方法  -   删除、插入、替换  -------splice()
重假设用途是向数组中部插入项
插入:能够向钦赐地方插入放肆数量的项,需提供3个参数:发轫地方、0(要刨除的项数)、要插入的项
splice(2,0,"red","blue")     //从数组的岗位2开首插入
去除 :能够去除放肆数量的项,只需提供2个参数:要刨除的率先项的义务和要刨除的项数
splice(2,2)                          //从数组地点2开端删除,删除2项
轮换:向数组内定地点插入放肆数量的项,且同期删除放肆数量的项,只需提供3个参数:起首地方、要删减的项数、要插入率性数量的项
splice(2,2,"red","blue");    // 从数组地方2起来删除,删除2项,然后再从地点2初始插入字符串"red","blue"
8.数组的重排序       ------       reverse()  、sort()
var array = [0,1,5,10,15];
sort()  :  依据字符串的相继进行排序
array.sort();
alert(array);    // 0,1,10,15,5
reverse()  :  反转数组顺序
array.reverse();
alert(array);     //5,15,10,1,0
实用升序排序:为sort()函数字传送递一个比较函数作为参数
function compare(value1,value2) {    //升序排列
      if (value1 < value2) {
             return   -1;      //升降序调节
      }  else if (value1 > value2) {
            return    1;       //升降序调节
      } else  {
            return 0;
      }
}
array.sort(compare);
alert(array);     //0,1,5,10,15
简化版的compare函数
function simpleCompare(value1,value2) {
      return  value2 - value1;
}
9.在数组中截取新数组,该操作不会耳濡目染原数组   ------   slice()
var array = [1,2,3,4,5,6,7,8,9];
var array1 = array.slice(3);        //4,5,6,7,8,9
var array2 = array.slice(2,4);     //3,4
10.数构筑建   ------     concat()
var array = [1,2,3];
var array1 = array.concat(4,5);     //array1 : 1,2,3,4,5
var array2 = array.concat([4,5,6]);      //array2  :  1,2,3,4,5,6
var array3 = array.concat(4,5,[6,7,8]);     //array3  :  1,2,3,4,5,6,7,8
11.岗位方法     ------      indexOf()     、   lastIndexOf()
indexOf(param1,param2)  :  param1:要探寻的项(数组内是还是不是含有次成分) ,param2(可选的)查找的源点地方的目录
var array = [1,2,3,4,5,6,7,8,9];
alert(array.indexOf(5));     //4
alert(array.indexOf(5,5));   //-1     查不到重回-1
12.数组迭代方法:  ------ every()  、filter()  、forEach()  、map()  、some()     IE9+,Firefox2+,Safari3+,Opera9.5+,Chorme
every()  :  对数组中的每一种运营给定函数,借使该函数对每一类都回到true,则赶回true;
判断数组A中的全体因素都在数组B内:
var A = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var B = [1, 2, 5, 6, 6, 8];
var boo = B.every(function(item, index, array){
        if (A.indexOf(item)!= -1) {
                 return true;               
          }
 });
alert(boo);     //true
var C = [1, 2, 5, 6, 6, 8];
var booc = C.every(function(item, index, array){
        if (A.indexOf(item)!= -1) {
                 return true;               
          }
 });
alert(booc);     //false
filter()  :  对数组中的每一类运维给定函数,重回该函数会回来true的项组成的数组。
forEach()  :  对数组中的每一类运维给定函数,无重返值。
抽出数组B中的成分在数组A中出现(未出现)过的成分:
var A = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var B = [1, 2, 5, 6,0, 8];
var arr = new Array();
B.forEach(function(item, index, array){
      if (A.indexOf(item)!= -1) {
             arr[arr.length] = item;           
       }
 });
 alert(arr);    //1,2,5,6,8
map()  :  对数组中的每一类运营给定函数,再次回到每一次函数调用的结果组成的数组。
some():  对数组中的各式运行给定函数,如若该函数对任一项都回去true,则赶回true;
13.紧缩方法:      -------      reduce()   、reduceRight()                    IE9+,Firefox3+,safari 4+,Opera 10.5,chrome
迭代数组的每一种,然后创设三个末段的再次回到值。函数接收4个参数:前一个值、当前值、项的目录、数组对象
其一函数重返的任何值都会作为首个参数自动传给下一项。第叁次迭代时有爆发在数组的第二项上,因此首先个参数是数组的第一项。
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var sum = array.reduce(function(pre,cur,index,array) {
return pre + cur;
})
alert(sum);    //45
reduceRight()只是反向遍历,结果不变
14.到手调用方法时的日子和岁月的微秒数  ------      Date.now();
15.日期格式化方法:
toDateString()  :  以特定于达成的格式呈现星期几、月、日和年。
toTimeString()  :  以特定于完结的格式彰显时、分、秒和时区。
toLocaleDateString()  :  以特定于地点的格式显示星期几、月、日和年。
toLocale提姆eString()  :  以特定于地点的格式展现时、分、秒。
toUTCString()  :  以一定于达成的格式显示完整的UTC日期。
16.日期/时间组件的措施:
getTime()      ------      重返表示日期的微秒数;与valueOf()方法重临的值一样

var colors = new Array();

 

    假诺精晓数组要保留的品类数目,也足以给构造函数字传送递参数,而该参数会自动形成length属性的值,如下:

17.作为值的函数:相比对象的某几个参数,可依赖参数(对象属性)进行排序。
function createComparisonFunction(propertyName) {
        return function(object1,object2) {
             var value1 = object1[propertyName];
var value2 = obejct2[propertyName];
if (value1 < value2) {
     return -1;
} else if (value1 >value2) {
     return 1;
} else {
     return 0;
}
        }
}

复制代码 代码如下:

var data = [{name : "zhang" , age : 20 } , {name : "li" ,age : 25 }];
data.sort(createComparisonFunction(name));
alert(data[0].name);     // "li"
data.sort(createComparisonFunction(age));
alert(data[0].name);      //"zhang"
18.函数的里边属性:     ------         arguments.callee()
阶乘总括:
 function factorial(max){
          if (max <= 1) {
                    return 1;
          } else {
                    return max * arguments.callee(max - 1);
          }
}
alert(factorial(5));   //120
断定数值范围内的阶乘总计:
function betweenFactorial (max,min) {
return factorial(max)/factorial(min-1);
}
alert(betweenFactorial(5,4));    //20
19.函数的停放属性和方式 :    -------       apply()
选出数组中最大/最小的值
var data = [1,2,3,4,65,6,5,8];
var maxValue = Math.max.apply(Math,data);
alert(maxValue);     //56
var minValue = Math.min.apply(Math,data);
alert(minValue);     //1

var colors = new Array(20);

 

    也得以向Array构造函数中传送数组中应包含的项,如下代码所示:

---- typeof undefined ----- 要是那几个值未定义 2.测量试验数字是或不是位于最大数和微小数里面 ----- isFinite() var result = Number.MAX_VA...

复制代码 代码如下:

var colors = new Array("red","blue");

    其他,使用Array构造函数时也得以归纳new操作符,如下所示:

复制代码 代码如下:

var colors = Array(20);

    创制数组的第三种方法是运用数组字面量表示法。数组字面量由一对含蓄数组项的方括号表示,多少个数组项之间用逗号隔离,如下所示:

复制代码 代码如下:

var color = ["red","blue"];
var names = [];
var values = [1,2,]//IE8及前面3项,其余2项,不建议使用

    与指标同样,在选拔数字字面量表示法时,也不会调用Array的构造函数。
   在读取和设置数组的值时,要选取方括号并提供相应值的基于0的数字索引,如下所示:

复制代码 代码如下:

var colors = ["red","blue"]; //定义数组
alert(colors[0]); //red
colors[1] = "black" //修改第2项
colors[2] = "brown" //新增第3

    数组的项数保存在其length属性中,那天性情始终会重临0或越来越大的数字,如下所示:

复制代码 代码如下:

var colors = ["red","blue"]; //定义数组
var names=[];
alert(colors.length);        //3
alert(names.length)          //0

    值得注意的是,数组的length值不是只读的。由此,通过设置此值,能够从数组的末梢移出项或向数组增加项,如下:

复制代码 代码如下:

var colors = ["red","blue"];
colors.length = 1;
alert(colors[1]); //undefined

    利用length属性也得以低价的向数组末尾加多数据:

复制代码 代码如下:

var colors = ["red","blue"];
colors[colors.length] = "black"; //在位置2新增
colors[colors.length] = "brown"; //在位置3新增

1、检查评定数组

    对于二个网页或叁个大局作用域来讲,使用instanceof操作符能够做到:

复制代码 代码如下:

if(value instanceof Array){
  // 试行操作
}

    instanceof操作符局限性在于全局效用域,要是网页饱含五个框架,就存在四个以上的全局推行景况。为了化解这些标题,ECMAScript5猛增了Array.isArray()方法,使用如下:

复制代码 代码如下:

if(Array.isArray(value)){
    // 实践操作
}

2、转化方法     调用数组的toString()方法会重临由数组中各类值的字符串格局拼接而成的多少个以逗号分隔的字符串。而调用valueOf()重返还是数组。如下所示:

复制代码 代码如下:

var colors = ['red', 'blue', 'green'];
alert(colors.toString()); //red,blue,green
alert(colors.valueOf()); //red,blue,green
alert(colors)            //red,blue,green

    数组承接的toLocalString()、tiString()和valueOf()方法,在暗许情状下都会以逗号分隔符的字符串格局再次回到数组项。而假如使用join()方法,则足以应用不一致的相间符来创设那一个字符串。join()方法只接受一个参数,即用作分隔符的字符串,如下所示:

复制代码 代码如下:

var colors = ['red', 'blue', 'green'];
alert(colors.join(',')); //red,blue,green
alert(colors.join('|')); //red|blue|green

    如若数组中的某一项值为null只怕undefied,那么该值在join()、toLocalString()、tiString()和valueOf()方法再次回到结果以空字符串表示。

3、栈方法

Javascript专门为数组提供了push()和pop()操作,以便完成类似栈的一坐一起。

push()方法能够接过跋扈数量的参数,把她们一一增加到数组末尾,并赶回修改后数组的尺寸。pop()方法规从数组末尾溢出终极一项,收缩数组的length值,然后再次回到移出的项。

复制代码 代码如下:

var colors = new Array(); //定义数组
var count = colors.push("red", "blue"); //压入两项
alert(count); //2
count = colors.push("black"); //压入另一项
alert(count); //3
var item = colors.pop(); //弹出最终一项
alert(item); //"black"
alert(colors.length); //2

4、队列方法

栈数据结构的拜望法规是LIFO(后进先出),而队列的访问法则是FIFO(先进先出)。队列在列表末端增添项,在前边二个移出项。

shift()方法能够移除数组中的第一项,并重临该项,数组的length-1。结合push()和shift()方法,能够像使用队列一样采纳数组,如下所示:

复制代码 代码如下:

var colors = new Array();
var count = colors.push("red", "blue");
count = colors.push("black");
alert(count);
var item = colors.shift(); //获得第一项
alert(item); //"red"
alert(color.length); //2

 ECMAScript还为数组提供了unshift()方法。unshift()和shift()方法用途相反:它在数组前端增添大肆个项并赶回新数组的长短。由此,同期接纳unshift()和shift()方法,能够从相反方平昔效仿队列,即在数组前端增加新项,从数组末端移出项,如下所示:  

复制代码 代码如下:

 var colors = new Array();
var count = colors.push("red", "green");
alert(count); //2
count = colors.unshift("black"); //推入另一项
alert(count); //3
var item = colors.pop(); //获得最后一项
alert(item) //green
alert(colors.length) //2  

 5、重排序方法     数组中曾经存在七个可以直接用来重排序的议程:reverse()和sort()。reverse()方法会依照反转数组项的排序。

复制代码 代码如下:

var values = [2, 1, 3, 4, 5];
values.reverse();
alert(values); //5,4,3,2,1

    暗中认可情形下,sort()方法根据升序排列数组项,调用每一种的toString()方法,相比较字符串,以分明怎样排序。固然数组中的每一种都以数值,sort()方法比较的都是字符串。  

复制代码 代码如下:

var values = [12, 11, 3, 4, 5];
values.sort();
alert(values); //12,11,3,4,5

    我们能够因此贰个相比函数当作参数字传送递给sort()方法。如下:

复制代码 代码如下:

function compare(value1, value2) {
    if (value1 < value2) {
        return -1
    } else if (value1 > value2) {
        return 1
    } else {
        return 0
    }
}
var values = [0, 1, 5, 10, 15];
values.sort(compare);
alert(values);    //0,1,5,10,15 

6、操作方法     ECMAScript为操作在数组中提供了十分的多办法。在那之中,concat()方法能够依据当前数组中的全数项创造多少个新数组。

复制代码 代码如下:

var colors = ["red", "green", "blue"];
var colors2 = colors.concat("yellow", ["black", "brown"]);
alert(colors); //red,green,blue
alert(colors2); //red,green,blue,yellow,black,brown

    slice()方法,它亦可基于当前数组的三个项或七个项成立新数组,它能够吸收接纳二个或三个参数,即要重返项的原初和终止地点。八个参数时,重回该参数钦定地方上马到眼下数组末尾的有着项。四个参数则赶回初步到钦赐地点的装有项——不包涵甘休位置的项。注意,slipe()方法不影响原始数组。

复制代码 代码如下:

var colors=["red","green","blue","black","brown"];
var colors2=colors.slice(1);
var colors3=colors.slice(1,4);
alert(colors2); //green,blue,black,brown
alert(colors3); //green,blue,black

    slice()方法删除:能够去除跋扈数量的项,只需点名2个参数:要删减的第一项的职位和要去除的项数。
    slice()方法插入:可以向钦命位置插入任性数量的项,只需提供3个参数:发轫地方、0(要删减的项数)和要插入的项。
    slipe()方法替换:可以项钦定地点插入任性数量的项,且同有的时候候删除率性数量的项,只需点名3个参数:初步地方、要刨除的项数和要插入的率性数量的项。

复制代码 代码如下:

var colors = ["red", "green", "blue"];
//删除
var removed = colors.slice(0, 1); //删除第1项
var colors3 = colors.slice(1, 4);
alert(colors); //green,blue
alert(removed); //red
//插入
removed = colors.slice(1, 0,"yellow","orange"); //从位置1开头插入
alert(colors); //green,yellow,orange,blue
alert(removed); //空数组
//替换
removed = colors.slice(1, 1,"red","purple"); //从地方1发端插入
alert(colors); //green,"red","purple",orange,blue
alert(removed); //"yellow"

7、地点方法     ECMAScript5为数组提供了多少个职分方法:indexOf()和lastIndexOf()。那七个主意都收下四个参数:要物色的项和代表查找起源地方的目录(可选)。其中indexOf()方法从数组的初叶开始前后相继探寻,lastIndexOf()方准绳从数组的最终起首向前查找。
    那八个主意都回去要研究的项在数组中的位置,在并没有找到的情景下回到-1。

复制代码 代码如下:

var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
alert(numbers.indexOf(4)) //3
alert(numbers.lastIndexOf(4)) //5
alert(numbers.indexOf(4, 4)) //5
alert(numbers.lastIndexOf(4, 4)) //3

8、迭代方式

ECMAScript5为数组定义了5个迭代方法。每一种方法都承受多少个参数,第二个是开展迭代的函数,第三个是该函数的作用域对象【可选】。

开展迭代的函数接受多个参数,第贰个是数组中要拓宽迭代的因素的值,第贰个是数组候总要进行迭代的因素的任务,第三个是迭代数组本人。

    1. every()      对数组中的每一种运营给定的函数,假若该函数对每一样都回来true,则赶回true    
 2. filter()       对数组中的每一样运转给定的函数,重回该函数重返true的项整合的数组。    
 3. forEach()  对数组中的各样运营给定的函数,这一个办法未有重返值    4. map()       对数组中的每一种运营给定的函数,再次来到每趟函数调用的结果组成的数组
    5. some()     对数组中的每一种运维给定的函数,假设该函数对自由一项再次回到true,则赶回true
    那个迭代方法协理的浏览器有,IE9+,Firefox2+,Safari3+,Opera 9.5+,chrome
    在这么些办法中,最相似的是every()和some(),它们都以用以查询数组中的项是或不是满意某些条件。对every()来讲,传入的函数必需对每一类都回去true,那个格局才回到true;不然,他就回去false。而some()方准绳是假若传入的函数对数组中某一项返回true,就回到true。

复制代码 代码如下:

var num = [1,2,3,4,5,6,7,8,9];
var everyResult = num.every(function(item, index, array) {
    if(item > 2) {
        return true;
    }
});
alert(everyResult); //false
var someResult = num.some(function(item) {
    if(item > 2) {
        return true;
    }
});
alert(someResult); //true

    filter()是使用内定的函数明确是或不是在回来的数组中带有某一项。

复制代码 代码如下:

var num = [1,2,3,4,5,4,3,2,1];
var filterResult = num.filter(function(item) {
    if(item > 2) {
        return true;
    }
});
alert(filterResult);  //[3,4,5,4,3]

  map()也回到一个数组,而以此数组的每一项都以在原始数组中的对应项上运转传入函数的结果。  

复制代码 代码如下:

  var num = [1,2,3,4,5,4,3,2,1];
var mapResult = num.map(function(item) {
    if(item > 2) {
        return true;
    }
}); //[2,3,6,8,10,8,6,4,2]  

   forEach()是对数组中的各项运转传入的函数。这么些艺术未有重临值,本质上与使用for循环迭代数组同样。

复制代码 代码如下:

var num = [1,2,3,4,5,4,3,2,1];
num.forEach(function(item) {
  // 实行操作
});

9、归并措施

ECMAScript5中新增添了多个主意:reduceRight() 和 reduce()。那八个议程都承受七个参数:第一个是用来迭代的数组的函数,这些函数有三个参数分别是,前三个值,当前值,项的目录,数组对象。然则那么些函数的其余值都会作为第一个参数自动传给下一项。第三个是用作第3个函数中第三个参数的起来值 。

复制代码 代码如下:

var nums = [1,2,3,4,5];
var sum = nums.reduce(function(prev, cur, index, array) {
    return prev + cur;
});
alert(sum);//15

你或然感兴趣的稿子:

  • javascript模拟php函数in_array
  • JavaScript实现的in_array函数
  • javascript版的in_array函数(推断数组中是不是存在特定值)
  • Javascript中Array用法实例解析
  • JavaScript数组Array对象增加和删除成分方法总计
  • Javascript基础教程之数组 array
  • javascript自定义in_array()函数完成格局

本文由六合联盟网发布于前端技术,转载请注明出处:javaScript学习小记

关键词: