美文网首页
js数组操作

js数组操作

作者: _theFeng | 来源:发表于2019-03-21 11:30 被阅读0次

    扁平化n维数组

    const flatten=(arr)=>{
      while(arr.some((item)=>Array.isArray(item))){
        arr=[].concat(...arr)
      }
      return arr;
    }
    console.log(flatten([1,23,[343,[567,4]]]))
    
    ES10
    const flatten=arr=>arr.flat(Infinity)
    console.log(flatten([1, 23, [343, [567, 4]]]))
    

    排序(除sort)

    冒泡排序
    Array.prototype.bubleSort=function () {
        let arr=this,
            len = arr.length;
        for (let outer = len; outer >= 2; outer--) {
          for (let inner = 0; inner <= outer - 1; inner++) {
            if (arr[inner] > arr[inner + 1]) {
              //升序
              [arr[inner], arr[inner + 1]] = [arr[inner + 1], arr[inner]];
              console.log([arr[inner], arr[inner + 1]]);
            }
          }
        }
        return arr;
      }
    [1,2,3,4].bubleSort() //[1,2,3,4] 
    
    选择排序(简洁明了)
    Array.prototype.selectSort = function () {
      let arr = this,len = arr.length;
      for (let i = 0, len = arr.length; i < len; i++) {
        for (let j = i, len = arr.length; j < len; j++) {
          if (arr[i] > arr[j]) {
            [arr[i], arr[j]] = [arr[j], arr[i]];
          }
        }
      }
      return arr;
    }
    console.log([1, 3, 3, 4,2].selectSort()) //[1,2,3,4]
    

    最大值

    // Math.max(10, 20);   //  20
    Math.max(...[1,2,3,4]) //4
    Math.max.apply(this,[1,2,3,4]) //4
    [1,2,3,4].reduce( (prev, cur,curIndex,arr)=> {
     return Math.max(prev,cur);
    },0) //4
    

    判断是否包含该值

    //ES6
    [1,2,3].includes(4) //false
    [1,2,3].indexOf(4) //-1 如果存在换回索引
    [1, 2, 3].find((item)=>item===3)) //3 如果数组中无值返回undefined
    [1, 2, 3].findIndex((item)=>item===3)) //2 如果数组中无值返回-1
    
    [1,2,3].some(item=>{
      return item===3
    }) //true 如果不包含返回false
    

    类数组转化

    Array.prototype.slice.call(arguments) //arguments是类数组(伪数组)
    Array.prototype.slice.apply(arguments)
    Array.from(arguments)
    [...arguments]
    

    每一项设置值

    [1,2,3].fill(false) //[false,false,false] 
    

    相关文章

      网友评论

          本文标题:js数组操作

          本文链接:https://www.haomeiwen.com/subject/pdcqvqtx.html