Javascript常用的数组方法

2017-05-20  本文已影响822人  顽皮的雪狐七七

Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,MDN上又太多。。其实常用的就那几个,很多都可以用那几个方法解出来。

很多方法中有兼容性的,在使用的时候,把兼容代码复制粘贴即可。

先贴上来数组和字符串的方法的比较,我在学习的时候也是会混。所以做了小总结。之后就是数组方法和一些实例。如果有侧边栏就好了,看得就比较清楚。

数组 字符串

slice | slice substring 截取需要开始和结束index的

splice | substr 截取需要开始index和截取长度的

concat | concat 都是连接,一个是连接数组,一个是连接字符串

indexOf | indexOf 搜索元素在不在里面,返回index值或者-1

join | split 这就是两个反义词啊,相互转化的利器

  • 截取方法中,字符串有三种方法slice / substring / substr ,数组方法有两个slice / splice
    其中字符串的slice 和 substring 是要开始和结束的索引,substr 是要开始索引和长度
    数组的slice是要开始和结束索引,但是splice是要开始索引和长度
  • 搜索元素方法中,数组和字符串都有indexOf方法,但是字符串多出来两种方法charAt和charCodeAt
    其中indexOf是返回索引,charAt是返回索引对应的值,charCodeAt是返回对应值的ASCII码值。
  • 数组的遍历有4中方法,map,every,foreach,some,filter
    其中foreach开始就停不下来,全部遍历。every遍历一个就判断一下,true就继续遍历下一个,false就跳出。map就是边遍历边运算。some返回的是布尔值,符合就是true,不符合就是false。filter返回的是符合元素组成的数组。
  • 增加数组元素,前面unshift,后面push
    移除数组元素,前面shift,后面pop
  • 数组和字符串都有concat方法,各自连接各自的,是数组就连接到数组,字符串就连接成字符串
  • 比较重要的两个就是数组和字符串之间的转化的两个方法
    join是数组转字符串,split是字符串转数组

数组

Array.prototype

Array.prototype 属性表示构造函数的原型,并允许您向所有Array对象添加新的属性和方法。

/*
如果JavaScript本身不提供 first() 方法,
添加一个返回数组的第一个元素的新方法。
*/ 

if(!Array.prototype.first) {
    Array.prototype.first = function() {
        return this[0];
    }
}

Array.prototype本身也是一个 Array

Array.isArray(Array.prototype); 
// true

//属性
Array.prototype.constructor
//所有的数组实例都继承了这个属性,它的值就是 Array,表明了所有的数组都是由 Array 构造出来的。
Array.prototype.length
//上面说了,因为 Array.prototype 也是个数组,所以它也有 length 属性,这个值为 0,因为它是个空数组。

判断是不是数组的方式

Array.isArray( );

Array.isArray( obj );

(Object.prototype)toString.call(arr) -> [object Array]

Object.prototype.toString.call([]) -> [ object Array]

instanceof

对象 instanceof 数据类型

数组长度

遍历数组

map

var new_array = array.map (function(value,index,array){ },thisArg);

 var arrNew = arr.map(function(value,index){
     console.log(‘索引是’+index+”,内容是:”+value+);
   })
      
 let numbers = [1, 5, 10, 15];
 let roots = numbers.map(function(x) {
      return x * 2;
   });
// roots is now [2, 10, 20, 30]
// numbers is still [1, 5, 10, 15]

forEach

array.forEach(function(value,index,array){},thisArg);

every

array.every(function(value,index){});

some(返回布尔)

array.some(callback[,thisArg])

filter

var new_array = arr.filter(callback[, thisArg])

截取数组

slice(索引)

array.slice(start,end)

splice(长度,可替换)

array.splice(start, deleteCount, value, ...)

连接数组

join(字符串)

var string = array.join()

concat

var new_array = array1.concat('array2','array3')

添加元素

push

array.push(value,...)

unshift

array.unshift(value, ...)

移除元素

pop

array.pop()

shift

array.shift()

数组排序

sort

arr.sort(compareFunction)

reverse

array.reverse( )

查找数组

indexOf(返回索引)

arr.indexOf(searchElement)

arr.indexOf(searchElement[, fromIndex = 0])


©copyright burning.

上一篇下一篇

猜你喜欢

热点阅读