JavaScript数组相关操作方法以及数组扩展与修复

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuelian3015/article/details/90147431

JavaScript一些常用的操作方法

join()

将数组中所有元素转化为字符串并连接一起,返回最后生成的字符串。可以指定分隔符;

        var arr = [23,56,78,0,98,190];
        console.log(arr.join(""));//235678098190
        console.log(arr.join("@ "));//23@ 56@ 78@ 0@ 98@ 190

reverse()

把数组的元素颠倒顺序,返回逆序数组;

        console.log(arr.reverse());//[190, 98, 0, 78, 56, 23]

sort()

把数组中元素排序返回排序后的数组(一般是按照正序排序)。

        arr.sort(function(a,b){return a-b;});
        console.log(arr)

concat()

连接两个数组,若concat()参数是数组,则连接的是该数组的元素,并非是数组本身,concat()不会递归扁平化数组的数组(就是只拆开最外层数组),也不会修改调用的数组。

        var arr1 = [12,34,56,78,82]
        console.log(arr.concat(arr1));

slice()

切片操作,返回指定数组的一个片段或者子数组,接受两个参数,分别表示片段的起始和结束位置。若只有一个参数,则表示从起始位置到结尾的所有数组元素;若参数是负数,则表示相对于数组中最后一个元素的位置。

       console.log(arr.slice(2,6));//[78,0,98,190]

splice()

Array.splice()是在数组中插入或者删除元素。第一个参数表示指定插入或(或)删除的起始位置。第二个参数表示从数组中删除的个数,若省略,则删除从起始位置到结尾的所有元素。

       console.log(arr.splice(2,4,2019));//[78, 0, 98, 190]
       console.log(arr); //[23,56,2019]

Array.splice()返回一个由被删除的元素组成的数组,若没有删除数组元素,则返回一个空数组。前两个参数指定了要删除的数组元素。其他参数则是需要插入数组中的元素,若这些参数中含有数组,直接插入数组本身并非数组元素。

push()和pop()

把数组当成栈来使用。

push()方法在数组的尾部添加元素,并且返回数组的新长度

pop()方法删除数组的最后一个元素,减小数组长度,并且返回被删除的元素。

unshift()和shift()

unshift():入队操作,向数组的头部添加元素,返回数组新的长度

shift():出队操作,就是删除数组的第一个元素,并且将其返回

toString()和toLocaleString()

toString()把数组元素转化为字符串

toLocaleString()把数组元素转化为本地化的字符串。

ECMAScript5中的数组方法

forEach()

从头到尾遍历数组,为每个元素调用指定的函数。forEach不能像for循环中使用break语句实现提前终止。需要把forEach方法放置在try块中,并抛出一个异常,抛出异常时就会提前终止。

function foreach(a,f,t){
    try {
        a.forEach(f,t)
    } catch (error) {
        if (error === foreach.break) {
            return
        else{
            throw error
        }
    }
}
foreach.break = new Error("提前终止")

map()

把数组的每一个元素传递给指定的函数,并且返回一个新数组(包含该函数的返回值)。即是针对数组的每一个参数进行操作。

       arr.map(item=>{
           console.log(item/2);
       })

fliter()

返回的数组是调用数组的一个子集,传递数组是用来做逻辑判断的。

       console.log(arr.filter((args)=>{
           return args % 2 == 0
       }));//[56, 78, 0, 98, 190]

every() 和 some()

every()和some()方法是数组的逻辑判断:针对数组元素应用指定的函数进行判断,返回true或者false。注意,一旦every()和some()确认该返回什么值它们就会停止遍历数组元素。

some方法中,只要数组中有一个元素满足条件,就返回true,立即停止遍历数组;

       console.log(arr.some((args)=>{
            return args % 2 == 0
       }));//true

every方法中,需要每一个元素都满足条件才能返回true。必须遍历全部的数组。

       console.log(arr.every((args)=>{
            return args % 2 == 0
       }));//false

reduce() 和 reduceRight()

将数组元素进行组合,生成单个值。reduce()需要两个参数,第一个参数是执行操作函数,第二个参数(可选)是一个传递给函数的初始值。

console.log(arr.reduce(function(a,b){return a+b}));//445

reduceRight()与reduce()相似,只是从右到左的进行处理。

indexOf() 和lastIndexOf()

indexOf()和lastIndexOf()搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引或者如果没有找到就返回-1。indexOf()从头至尾搜索,而lastIndexOf()则反向搜索。

console.log(arr.indexOf(0));//445

兼容ie678

        Array.prototype.indexOf = function(item,index){
           var n = this.length,i = ~~index;
           if(i<0)i +=n;
           for(;i<n;i++){
               if(this[i]===item){return i;}
           }

           return -1;
       }

       
       console.log(arr.indexOf(0));//445
       
       Array.prototype.lastIndexOf = function(item,index){
           var n = this.length,
               i = index == null ? n-1:index;
            if(i<0) i = Math.max(0,n+i);

            for(;i>=0;i--){
                if (this[i] === item) {
                    return i;
                }
            }

            return -1;

       }       

猜你喜欢

转载自blog.csdn.net/xuelian3015/article/details/90147431