数组操作

flat();数组扁平化(把数组中的多个数组合并成一个数组)

var a = [1,2,[2,3,4],5,6,7[5,4,67]];
a.flat();//[1,2,2,3,4,5,6,7,5,4,67];
//实现如下
function flatten(arr) {
    while(arr.some(item=>Array.isArray(item))) {
            arr = [].concat(...arr);
        }     
    return arr;
    }
实质是利用递归和数组合并方法 concat实现扁平。

from,Set,...扩展运算符实现数组去重

  var a = [1,1,1,1,2,2,3,4,5,6,5,4,3,2,41];
  var b = Array.from(new Set(a));
        b = [...new Set(a)];//效果和from一样
set是ES6新出来的一种一种定义不重复数组的数据类型。
Array.from是将类数组转化为数组。
...是扩展运算符,将set里面的值转化为字符串。
//实现如下取新数组存值,循环两个数组值相比较。
 Array.prototype.mydistinct = function () {
            var arr = [];
            for (var i = 0;i<this.length;i++) {
                for (var j = i + 1; j<this.length;j++) {
                    if (this[i] === this[j]) {
                        j = ++i;
                    }
                }
                arr.push(this[i])
            }
            return arr;
        }

排序

var a =[1,2,3,4]
a.sort((a,b)=> a - b);//升序
a.sort((a,b)=> b - a);//降序

最大最小值

var a =[1,2,3,4];
Math.max(...a) || Math.min(...a) 
Math.min.apply(this,a) || Math.max.apply(this,a)

求和

var a =[1,2,3,4];
a.reduce((a,b) => a+b)
reduce是ES5的数组api,参数有函数和默认初始值。
函数有四个参数:
pre:上一次的返回值
cur:当前值
curIndex:当前值索引
arr:当前数组

合并

var a =[1,2,3,4],b=[5,6,7,8];
var c = [...a,...b]
var d = a.concat(b)

判断是否包含值

var b=[5,6,7,8];
b.includes(5);
b.indexOf(3);//-1 如果存在换回索引
b.find(item => item === 5)//5 如果数组中无值返回undefined
b.findIndex(item => item === 5) //如果数组中无值返回-1有值返回索引
b.some( item => item === 5);//存在就返回true无返回false

类数组转换

...扩展运算符

每一项设置值

var b=[5,6,7,8];
b.fill(2);

每一项是否满足

var b = [5,6,7,8]
b.every( i => typeof i === 'number')

过滤删选

var b = ['4',5,6,7,8];
b.filter( i => typeof i === 'number')//[5,6,7,8]

对象和数组转化

var a = {name:'金毛',age:20}
Object.keys(a)//[name,age]
Object.values(a)//['金毛',20]
Object.entries(a)//[name,'金毛'],[age,20]

数组增删

var a = { name: "aaa", age: 66 },
  b = { name: "bbb", age: 55 },
  c = { name: "ccc", age: 44 },
  d = { name: "ddd", age: 33 },
  e = { name: "eee", age: 22 },
  f = { name: "fff", age: 11 };
var arr = [a, b, c, d, e, f]; //原始数据
var arr1 = [a, c, f]; //需要处理的数据
//数组操作
const delArray = (initarr, oparr, index = 1) => {
  !Array.isArray(oparr) && (oparr = [oparr]);
  oparr.forEach(value => {
    if (initarr.indexOf(value) !== -1)
      initarr.splice(initarr.indexOf(value), index);
  });
};
const addArray = (initarr, oparr) => {
    !Array.isArray(oparr) && (oparr = [oparr]);
    oparr.forEach(value => {
      if (initarr.indexOf(value) === -1)
        initarr.push(value);
    });
  };


location关键字获取

let str = location.search;
function urlSearch(str){
    let obj = {}
      if(str){
          str = decodeURIComponent(str).substring(1).split('&');
          str.forEach(v=>{
              v = v.split('=');
              obj[v[0]]=v[1];
          })
      }
    return obj
}

随机数

 function selectFrom(minValue, maxValue) {
        var choices = maxValue - minValue + 1;
        return Math.floor(Math.random() * choices + minValue);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容