神刀安全网

数组

JS中的数组和其他语言不同的是一个数组可以保存多个类型的值,比如数组中第一个位置保存一个字符类型的值,第二个可以保存数值型的值,第三个则可以保存一个对象。

声明方式:

 var color = new Array();  var color = new Array(20);     var color = new Array("red","blue","green"); 

另外数组中的length属性不是只读的,可以通过这个属性设置数组的长度。

例如:

 var color = new Array("red","blue","green");  color[color.length]="black"; //在位置3添加一种颜色  color[color.length]="brown";//在位置4添加一种颜色 

这样依次在最后的位置添加元素,对于跨长度添加也是可以的,例如在100的位置添加一个元素,但这个区间没有赋值的元素都会为undefined

检测对象是否为数组

 if (Array.isArray(value)) {     } 

数组的tostring()、valueOf()、join()方法

这些方法会将数组内每项元素用逗号分隔开

 color.toString(); //red,blue,green  color.valueOf();//red,blue,green  color.join("|"); //red|blue|green  Join方法,表示用哪种符号分隔数组元素 

另外,需要注意如果数组中的元素存在undefined或null时,则上面的方法返回的是空字符串。

Push、pop、shift方法

 color.push("white", "org") ; 

在数组末尾添加两个元素,push里的数量不固定,可随意,另外这个方法有一个返回值,这个返回值,是数组的length

 color.pop(); 

获取数组的最后一个元素。

 color.shift()  

获取第一项,并移除第一项

排序

数组中提供了两个默认的排序方法,分别是reverse()和sort()

 var values=[0,1,5,10,15] 

reverse()方法是反转数组的顺序,按数组的下标倒序显示。values.reverse() //15,10,5,1,0

sort()方法是将内部的值进行tostring后进行排序。values.sort() //0,1,10,15,5

显然上面的排序是有错误的,因为比较的是字符串类型的所以会认为5比1大。

如果想得到正确的结果,可以向这个方法传递一个比较函数作为参数。

比较函数接收两个参数,如果第一个参数应该位于第二个之前,则返回一个负数,如果相等,则返回0,如果第一个位于第二之后,则返回正数,例如:

   function compare(value1, value2) {                     if (value1 < value2) {                      return -1                  } else if (value1 > value2) {                      return 1;                  } else {                      return 0;                  }              } 
 values.sort(compare);  

这样就可以正确排序了。如果逆序的话,则适当修改返回值,就可以。

如果只是数值类型的比较,则代码更为简单。

   function compare(value1,value2){                  return value1-value2              } 

concat、slice 方法

concat方法可以进行数组之间的连接,也可添加新元素

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

slice方法接收两个参数,起始位置和操作的个数,他可以进行删除、插入、替换,slice始终都会返回一个数组,该数组包含从原始数组中删除的项,如果没有任何项,则返回一个空数组。

 var colors = ["red", "green", "blue"];  var removed = colors.splice(0, 1); //删除第一项,并red  var removed = colors.splice(1, 0, "yellow", "orange");//从第一个位置插入两项,返回空  var removed = colors.splice(1, 1, "red", "purple"); //删除第二项,插入两项,返回blue 

位置方法 indexOf和lastIndexOf

这两个方法都接收两个参数,分别是要查找的项和查找的起点位置。

 var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];  numbers.indexOf(4); //返回3  numbers.lastIndexOf(4)  //返回5 从末尾开始查找 

如果这两个方法没有找到搜索项,则返回-1。

迭代方法

 var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1]; 

every() 如果该函数的每一项都返回true ,则返回true

 var everyResult = numbers.every(function (item, index, array) {                  return (item > 2);              }); //返回false 

filter() : 返回函数中满足条件的元素组成的数组。

 var filterResult = numbers.filter(function (item, index, array) {                  return (item > 2);              }); // 返回  [3,4,5,4,3] 

forEach() : 循环遍历数组,这个方法没有返回值。

 numbers.forEach(function (item, index, array) {                  //执行某些操作。              }); 

map() : 返回每次调用的结果组成的数组。

 var mapResult = numbers.map(function (item, index, array) {                  return (item * 2);              });  //[2,4,6,8,10,8,6,4,2] 

some() : 如果函数中,有任意一项返回true ,则返回true

 var someResult = number.some(function (item, index, array) {                  return (item > 2);              }); //true 

归并方法

归并方法有reduce()和reduceRight()两个方法,reduce是数组的第一项开始遍历到最后,reduceRight是从最后一项开始,遍历到第一项。

这两个函数分别接受4个参数:前一个值,当前值,项的索引和数组对象。

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

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 数组

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
分享按钮