数组的增、删、改、查操作

删除数据里面的指定元素

 // 模态框中的数组删除函数
    /* arr:当前数组
    *  val:需要删除的元素名
    */
    removeByValue(arr, val) {
      for (let i = 0; i < arr.length; i++) {
        if (arr[i] == val) {
          arr.splice(i, 1);
          break;
        }
      }
    },

合并两个数组,然后调换里面元素的位置

// 合并两个数组,然后调换里面元素的位置
     console.log("数组1", UnusualArray);
        console.log("数组2", this.columnsIndexValue);
        this.columnes = this.columnsIndexValue.concat(UnusualArray);
        console.log("数组3", this.columnsIndexValue.concat(UnusualArray));
        let x = 4,
          y = this.columnes.length;
        this.columnes.splice(
          x - 1,
          1,
          ...this.columnes.splice(y - 1, 1, this.columnes[x - 1])
        );
        if (y > 5) {
          this.columnes.forEach(item => {
            if (item.title === "监测值") {
              item.width = 300;
            }
          });
        }
        console.log("数组4", this.columnes);

两个数组去重的方法,删除重复的数据,得到新的数组

 /**
     * @description: 两个数组去重的方法,删除重复的数据,得到新的数组
     * @param {type} : array1数组1,array2数组2
     * @return: 返回去重后的数组
     */
    ArrayWeightRemoval(array1, array2) {
      let tempArray1 = [];
      let tempArray2 = [];
      for (let i = 0; i < array2.length; i++) {
        tempArray1[array2[i]] = true;
      }
      for (let i = 0; i < array1.length; i++) {
        if (!tempArray1[array1[i]]) {
          tempArray2.push(array1[i]);
        }
      }
      return tempArray2;
    },

数组去重,删除这个数组里面的重复数据

 /**
     * @description:数组去重,删除这个数组里面的重复数据
     * @param {type}: 有重复数据的数组
     * @return:无重复数据的数组
     */
    uniq(array) {
      let temp = [];
      for (let i = 0; i < array.length; i++) {
        // 如果当前数组的第i项在当前数组中第一次出现的位置是i,才存入数组;否则代表是重复的
        if (array.indexOf(array[i]) == i) {
          temp.push(array[i]);
        }
      }
      return temp;
    },

把一个数组插入到另一个数组的指定位置
var arr1 = ['a', 'b', 'c']; 
var arr2 = ['1', '2', '3']; 
// 把arr2 变成一个适合splice的数组(包含splice前2个参数的数组)
arr2.unshift(2, 0); 
console.log(arr2); 
//[2, 0, "1", "2", "3"]
Array.prototype.splice.apply(arr1, arr2); 
console.log(arr1); 
//["a", "b", "1", "2", "3", "c"]

优化写法

1、switch case 优化

testFunction(key) {
      switch (key) {
        case 1:
          this.test = "第一";
          break;
        case 2:
          this.test = "第二";
          break;
        case 3:
          this.test = "第三";
          break;
        default:
          this.test = "第四";
          break;
      }
      return this.test;
    },

这样是最常见的写法,我们可以利用 ES6 中的 Map 对象进行处理

handlerLogic1(status) {
      const actions = new Map([
        [1, "第一" // 或者是一个函数],
        [2, "第二"],
        [3, "第三"],
        ["default", "第四"]
      ]);
      let action = actions.get(status) || actions.get("default");
      this.test = action;
    }

在 Map 中参数可以是函数,也可以是纯数组。

2、数组去重

方法一、

const uniqueWithSpreadOperator = [...new Set(cars)];

方法二、

 Array.prototype.unique = function() {
        const tmp = new Map();
        return this.filter(item => {
          return !tmp.has(item) && tmp.set(item, 1);
        });
      };
      let array = [{ 1: 0 }, { 2: 3 }, { 2: 3 }];
      array.unique();

方法三、

Array.prototype.unique = function() {
    return this.sort().reduce((init, current) => {
        if (init.length === 0 || init[init.length - 1] !== current) {
            init.push(current);
        }
        return init;
    }, []);
}
var array = [1, 2, 3, 43, 45, 1, 2, 2, 4, 5];
array.unique();

方法四、

Array.prototype.unique = function() {
    const newArray = [];
    this.forEach(item => {
        if (!newArray.includes(item)) {
            newArray.push(item);
        }
    });
    return newArray;
}
var array = [1, 2, 3, 43, 45, 1, 2, 2, 4, 5];
array.unique();

3、重新组装对象

根据对象的值重新组装对象

 const cities = [
        { name: "Paris", visited: "no" },
        { name: "Lyon", visited: "no" },
        { name: "Marseille", visited: "yes" },
        { name: "Rome", visited: "yes" },
        { name: "Milan", visited: "no" },
        { name: "Palermo", visited: "yes" },
        { name: "Genoa", visited: "yes" },
        { name: "Berlin", visited: "no" },
        { name: "Hamburg", visited: "yes" },
        { name: "New York", visited: "yes" }
      ];

      const result = cities.reduce((accumulator, item) => {
        console.log(accumulator);
        return {
          ...accumulator,
          [item.name]: item.visited
        };
      }, {});

      console.log(result);

有条件的对象属性
优化原因:不需要根据一个条件写两个不同的对象,可根据短路运算符进行判断

 const getUsers = dj => {
        return {
          name: "张三",
          id: 1,
          ...(dj && {
            names: "李四",
            ids: 2
          })
        };
      };
      const s = getUsers(true);
      console.log(s);
      const a = getUsers(false);
      console.log(a);

一个对象解构成多个对象
将一个对象解构成多个对象,有时候一个对象包含很多属性,而我们只需要其中的几个,这里可以使用解构方式来提取我们需要的属性

 const currentRequest = {
        index: 0,
        size: 30,
        systemType: 1,
        indicator: "指标",
        system: "模型",
        version: "明细",
        time: 2019,
        region: "成都"
      };
      let systemdata = {},
        indicatordata = {};
      ({
        index: systemdata.index,
        system: systemdata.system,
        size: systemdata.size,
        ...indicatordata
      } = currentRequest);
      console.log(systemdata);
      console.log(indicatordata);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容