js数组方法

来源:互联网 发布:windows 注册服务 编辑:程序博客网 时间:2024/06/03 20:17

01.找处元素item在给定数组arr中的位置

function indexOf1(arr, item) {    return arr.indexOf(item);};function indexOf2(arr,item){    var index = -1;    arr.forEach(function (res,index) {        if(res===item&&index===-1){             index=i;        }    });    return index;};function indexOf3(arr,item) {    var len = arr.length;    for(var i = 0;i<len;i++){         if(arr[i]===item){               return i;         }     }     return -1;};

02.计算数组arr中所有元素的和

function sum1 (arr) {    return arr.reduce(function (p, c, i, a) {    //1--:34[3,4,5,8]    //2--:75[3,4,5,8]    //3--:128[3,4,5,8]    //p每次计算的结果相当于sum+=c中的sum;    //而c每次计算的结果相当于sum+=c中的c;    //i为索引    return p + c;    });};function sum2 (arr) {     var s = 0;     arr.forEach(function (value, index, arr) {          s += value;     });     return s;};function sum3 (arr) {    return eval(arr.join("+"));};

03.移除数组arr中与item相等的元素,返回新数组

function remove1 (arr, item) {    //splice(index,howmany,item1...itemx);    //index:规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。    //howmany:要删除的项目数量。如果设置为 0,则不会删除项目。    var newArr = arr.splice(0);            for (var i = 0; i < newArr.length; i++) {         if (newArr[i] == item) {              newArr.splice(i, 1);              i--;                      }    }    return newArr;};function remove2  (arr, item) {     var newArr = [];     for (var i = 0; i < arr.length; i++) {          if (arr[i] == item) {              newArr.push(arr[i]);          }     }     return newArr;};function remove3 (arr, item) {    return arr.filter(function (val) {        return val != item;     });};

04.移除数组arr中与item相等的元素,返回原数组

//splice(index,len,[item])var arr1 = ['a', 'b', 'c', 'd'];//remove--item不设置arr1.splice(1, 1);console.log(arr1);//Array [ "a", "c", "d" ]arr1.splice(1, 2);console.log(arr1);//Array [ "a" ]//replace--item为替换值var arr2 = ['a', 'b', 'c', 'd'];arr2.splice(1, 1, 'ttt');console.log(arr2);//Array [ "a", "ttt", "c", "d" ]arr2.splice(1, 2, 'ddd');console.log(arr2);//Array [ "a", "ddd", "d" ]//add--len设置为0,item为添加值

05.在数组arr末尾添加item,返回新数组

//普通迭代拷贝function append1 (arr,item) {     var len = arr.length,     newArr = [];     for(var i = 0;i < len;i++){          newArr.push(arr[i]);     }     newArr.push(item);     return newArr;};//使用slice浅拷贝+push组合function append2(arr,item) {     var newArr = arr.slice(0);//slice(start,end)浅拷贝     newArr.push(item);     return newArr;};//使用concat将传入的数组或非数组值与原数组合并,组成一个新的数组并返回function append3(arr,item) {    return arr.concat(item);}

06.删除数组arr最后一个元素,返回新数组

//删除数组最后一个元素,返回新数组function truncate1 (arr) {     return arr.slice(0,-1);}function truncate2(arr){     var a=[];     a = arr.slice(0);     a.pop(arr[arr.length-1]);};

07.在数组arr开头添加item,返回新数组

function prepend1(arr,item){    return [item].concat(arr);}function prepend2(arr,item) {    var newArr = [item];    [].push.apply(newArr,arr);    return newArr;}function prepend3(arr,item) {     var newArr = arr.slice(0);     newArr.unshift(item)//等价newArr.splice(0,0,item);     return newArr;}

08.删除数组arr第一个元素,返回新数组

function curtail1(arr){     return arr.slice(1);}function curtail2(arr) {     return arr.filter(function (value,index) {         return index!==0;     })};function curtail3(arr) {     var newArr = [];     [].push.apply(newArr,arr);     newArr.shift();     return newArr;};function curtail4(arr) {     var newArr = arr.concat();     newArr.shift();     return newArr;};

09.合并数组,返回新数组

function concat1(arr1,arr2) {     return arr1.concat(arr2);};function concat2(arr1,arr2) {     var newArr = arr1.slice(0);     [].push.apply(newArr,arr2);     return newArr;};

10.在数组arr的index处添加item,返回新数组

function insert1(arr,item,index){     return arr.slice(0,index).concat(item,arr.slice(index));};function insert2(arr,item,index) {     var newArr = arr.concat();//等价于 newArr=arr.slice(0)     newArr.splice(index,0,item);     return newArr;};function insert3(arr,item,index) {     var newArr = [];     [].push.apply(newArr,arr);     newArr.splice(index,0,item);     return newArr;};

11.统计数组arr等于item的元素出现的次数

function count1(arr,item) {    var count = arr.filter(function (a) {    return a===item;});    return count.length;};function count2(arr,item) {    var count = 0;    arr.map(function (a) {        if(a===item) count++;    });    return count;};function count3(arr,item) {    var count = arr.reduce(function(p,c){        return c===item?p+1:p;    },0);    return count;};

12.找出数组arr中重复出现过的元素

function duplicates(arr) {    //a数组存放结果,b数组存放arr中每个元素的个数    var a=[],b=[];    for(var i = 0;i<arr.length;i++){        if(!b[arr[i]]){            b[arr[i]]=1;            continue;        }        b[arr[i]]++;    }    for(var i = 0;i< b.length;i++){        if(b[i]>1){            a.push(i);        }    }    return a;}

本人刚开始学习,有些地方还是不理解,如有错误或建议,请留言!谢谢!!!