(一)Lodash数组篇

2018-09-17  本文已影响0人  我拥抱着我的未来

概念简述

数组篇

作用: 讲数组array拆分成多个size长度的区块,并将这些区块组成一个新的数组,如果array无法分割成等长的区块,那么最后的剩余元素将组成一个区块。

 let _ = require("lodash");
    let arr = [1, 2, 3, 4, 5, 6];
    let arr_result = _.chunk(arr, 2);
    console.log(arr_result);
//结果[[1,2],[3,4],[5,6]]
//如果第二个参数要是4则变成 [[1,2,3,4],[5,6]]

作用: 创建一个新数组,包含原数组中所有的非假值元素。例如false,null,0,"",undefined,NaN都被认为假值

   let _ = require("lodash");
    let arr = [0, 1, NaN, 2, null, 3, undefined];
    let arr_result = _.compact(arr);
    console.log(arr_result);
//结果 [1,2,3]

创建一个新的数组将array与任何数组或值链接在一起

    let _ = require("lodash");
    let arr = [1];
    let arr2 = _.concat(arr, 2, [3], [[4]], { name: "张三" });
    console.log(arr2);
    console.log(arr);

创建一个具有唯一array值得数组, 每个值不包含在其他给定的数组中

let _ = require("lodash");
    let result = _.difference([3, 2, 100], [100, 2]);
    console.log(result);
//结果就是[3]

创建一个具有唯一array值得数组,

    let _ = require("lodash");
    let result = _.differenceBy(
      [{ name: "哈哈" }, { sex: "男" }],
      [{ name: "哈哈" }],
      "name"
    );
    console.log(result);
//结果[{sex:"男"}]
    let _ = require("lodash");
    let result = _.differenceBy([3.1, 4.2, 5.3], [4.6, 5.1], Math.floor);
    console.log(result);
//结果3.1
   let _ = require("lodash");
    let result = _.differenceBy([12, 3, 4], [3, 1], function(item) {
      return item - 4 > 0;
    });
    console.log(result);

创建一个切片数组,去除array前面的n个元素,从左边开始切割

    let _ = require("lodash");
    let arr = [1, 2, 3, 4, 5, 6];
    let arr_result = _.drop(arr, 3);
    console.log(arr_result);
//结果就是[4,5,6]
//如果要去除的元素个数比总长都大,那么返回一个空数组,要是0就不切割了

创建一个切片数组,去除array前面的n个元素,从右边开始切割

    let _ = require("lodash");
    let arr = [1, 2, 3, 4, 5, 6];
    let arr_result = _.dropRight(arr, 3);
    console.log(arr_result);
//结果就是[1,2,3]
//如果要去除的元素个数比总长都大,那么返回一个空数组

创建一个切片数组,去除满足方法或者条件的

    let _ = require("lodash");
    let arr = [1, 2, 3, 4, 5, 6];
    let arr_result = _.dropWhile(arr, function(item) {
      return item < 4;
    });
    console.log(arr_result);
//结果就是[4,5,6]
//如果都不满足,那么返回一个空数组

使用value值来替换(array里面的值),从start位置开始到end位置结束

    let _ = require("lodash");
    let array = [2, 3, 4];
    let result = _.fill(array, "a", 1, 2);
    console.log(result);
   //结果就是[2,"a",4]
//要是从0开始那么改变的就是第一位

返回第一个通过条件为真值得元素的索引(index)值,而不是元素本身

    let _ = require("lodash");
    let user = [
      { user: "哈哈哈", active: true },
      { user: "呵呵呵", active: true },
      { user: "嘿嘿嘿", active: false },
      { user: "哦哦哦", active: false }
    ];
    let result = _.findIndex(user, function(item) {
      return !item.active;
    });
    console.log(result);
//返回的结果就是2因为从0开始

获取数组array的第一个元素

 let _ = require("lodash");
    let user = [
      { user: "哈哈哈", active: true },
      { user: "呵呵呵", active: true },
      { user: "嘿嘿嘿", active: false },
      { user: "哦哦哦", active: false }
    ];
    let result = _.first(user);
    console.log(result);
 //结果就是{user:"哈哈哈",active:true}

将array递归为一维数组

    let _ = require("lodash");
    let user = [1, [2, 3, 4, [6, 8, [9, 10]]]];
    let result = _.flattenDeep(user);
    console.log(result);
//结果就是[1,2,3,4,6,8,9,10];

依据depth递归减少array的嵌套层数

    let _ = require("lodash");
    let user = [1, [2, 3, 4, [6, 8, [9, 10]]]];
    let result = _.flattenDepth(user, 2);
    console.log(result);
    //结果[1,2,3,4,6,7,[9,10]]

创建唯一值得数组,这个数组包含所有数组的共同元素

   let _ = require("lodash");
    let result = _.intersection([1, 2], [2, 3], [4, 2]);
    console.log(result);
    //结果[2]

创建唯一值得数组,这个数组包含所有数组的共同元素

   let _ = require("lodash");
    let result = _.intersectionBy(
      [1.3, 2.2],
      [2.6, 3.9],
      [4.1, 2.1],
      Math.floor
    );
    console.log(result);
  //结果[2.2]
  let _ = require("lodash");
    let result = _.intersectionBy([{ x: 1 }], [{ x: 1 }, { name: 3 }], "x");
    console.log(result);
  //结果[{x:1}]

将array中的所有元素转换为由分隔符分割的字符串

 let _ = require("lodash");
    let result = _.join([1, 2, 3, 4], "~");
    console.log(result);
//结果1~2~3~4

获取array中最后一个元素

 let _ = require("lodash");
 let result = _.last([1, 2, 3, 4]);
 console.log(result);
//结果就是4

获取array中第N个元素,如果N为负数,则返回从数组结尾开始的第N个元素

    let _ = require("lodash");
    let array = [1, 3, 3, 4, 5, 6];
    let result = _.nth(array, 0);
    console.log(result);
   //结果就是1

移除数组array中所有和给定值相等的元素,这个方法会改变原数组。

    let _ = require("lodash");
    let array = [1, 3, 3, 4, 5, 3, 2, 6, 2];
    _.pull(array, 3, 2);
    console.log(array);
//结果就是[1,4,5,6]

移除数组array中所有和给定值相等的元素,这个方法会改变原数组。这个元素必须是数组

 let _ = require("lodash");
    let array = [1, 3, 3, 4, 5, 3, 2, 6, 2];
    _.pullAll(array, [2, 3]);
    console.log(array);
//结果[1,4,5,6]

凡是后面有By都会有迭代器

移除数组array中所有和给定值相等的元素,这个方法会改变原数组。迭代器会优先过滤下数组

    let _ = require("lodash");
    let array = [1.3, 3.2, 3.4, 4.4, 5.3, 3.2, 2.1, 6.7, 2.8];
    _.pullAllBy(array, [2, 3], Math.floor);
    console.log(array);
   //结果就是 [1.3, 4.4, 5.3, 6.7]

根据索引indexes,移除array中对应的元素,并返回被移除元素的数组,这个方法会改变原数组

    let _ = require("lodash");
    let array = [1.3, 3.2, 3.4, 4.4, 5.3, 3.2, 2.1, 6.7, 2.8];
    _.pullAt(array, 1);
    console.log(array);
 //结果就是[1.3,3.4, 4.4, 5.3, 3.2, 2.1, 6.7, 2.8];

移除迭代器中返回是真的元素

  let _ = require("lodash");
    let result = _.remove([1, 2, 3, 4, 5, 6], function(item) {
      return item % 2 == 0 ? true : false;
    });
    console.log(result); 

反转array使得第一个元素变成最后一个元素,这个方法会改变原数组

  let _ = require("lodash");
    let array = [1, 2, 3, 4, 2, 5, 6];
    _.reverse(array);
    console.log(array);
 //结果[6,5,2,4,3,2,1]

裁剪数组array,从start位置开始到end结束(包前不包后) 不改变原数组

  let _ = require("lodash");
    let array = [1, 2, 3, 4, 2, 5, 6];
    let result = _.slice(array, 0, 4); 
    console.log(array);
    console.log(result);
 //结果[1,2,3,4]

创建一个去重后的array的数组副本,只有第一次出现的元素才能被保留,不会改变原数组

   let _ = require("lodash");
    let array = [1, 2, 3, 4, 2, 5, 6];
    let result = _.uniq(array);
    console.log(array);
    console.log(result);
//结果[1,2,3,4,5,6]
上一篇 下一篇

猜你喜欢

热点阅读