Js-技巧

目录

1、数组去重

2、转换数字类型/字符串

3、性能追踪(测试耗时)

4、数组扁平化


1、数组去重

常规:

双层for循环去重

function unique(arr) {
  for (let i=0; i<arr.length; i++) {
    for (let j=i+1; j<arr.length; j++) {
      if (arr[i] === arr[j]) {
        arr.splice(j, 1);
        j--;
      }
    }
  }
  return arr;
}

优化:

利用indexOf去重:

function unique(arr) {
  if (!Array.isArray(arr)) {
    console.log("type error!");
    return;
  }
  let array = [];
  for (let i=0; i<arr.length; i++) {
    if (array.indexOf(arr[i]) === -1) {
      array.push(arr[i]);
    }
  }
  return array; 
}

更简单:

利用Array.from与set去重

function unique (arr) {
  if (!Array.isArray(arr)) {
    console.log("type error!");
    return;
  }
  return Array.from(new Set(arr));
}

2、转换数字类型/字符串

转数字:

/**
 * 常规:
     parseInt()或Number()
   也可以使用“+”来实现:
 */
const age = "10"
const number = +age

转字符串:

/**
 * 常规:
     toString()或String()
   也可以使用“+”来实现:
 */
const age = 10
const string = age + "";

3、性能追踪(测试耗时)

let start = performance.now();
let sum = 0;
for (let i=0; i<100000; i++) {
  sum+=1;
}
let end = performance.now();
let timeuse = end - start
console.log(timeuse)

4、数组扁平化

数组扁平化就是将一个多维数组转换为一个一维数组

常规:递归实现

let arr = [1, [2, [3, 4]]];

function flatten(arr) {
  let result = [];
  for (let i=0; i<arr.length; i++) {
    if (Array.isArray(arr[i])){
      result = result.concat(flatten(arr[i]));
    } else {
      result.push(arr[i]);
    }
  }
  return result;
}

flatten(arr)

优化:使用reduce

let arr = [1, [2, [3, 4]]];

function flatten(arr) {
  return arr.reduce(function (prev, next) {
    return prev.concat(Array.isArray(next) ? flatten(next) : next);
  }, []);
}

flatten(arr)

 es6新增:flat

参数depth,代表展开嵌套数组的深度,默认是1

let arr = [1, [2, 3, [4, [5]]]];
arr.flat(3);    //[1,2,3,4,5]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值