• Array Flattening
  1. es2019 method

    arr.flat(Infinity)

  2. Using helper function

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

  3. Without helper function

    let flatten(arr) => {
    let res = [];

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

    return res;
    }

  4. Using some

    let flatten = (arr) => {
    //concat method flattens one level each time
    let res = [].concat(…arr);
    return res.some(Array.isArray) ? flatten(res) : res;
    }

  5. Using reduce

    let flatten = (arr) =>{
    return arr.reduce(
    (pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur)
    ,[])
    }

  6. Using toString

    arr.toString().split(‘,’);

  • Remove specified element from array

    let remove = (arr, item) => {
    for (let i = 0; i < arr.length; i++) {
    if (arr[i] === item) {
    arr.splice(i, 1);
    i–;
    }
    }
    return arr;
    }

  • Promise Batch Execution

  • 数组打平
  1. es2019方法

    arr.flat(Infinity)

2.借助helper函数

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

3.不用helper函数

let flatten(arr) =>  {
    let res = [];

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

    return res;
}

4.使用some

let flatten = (arr) => {
//concat方法每次会拉平一层
    let res = [].concat(...arr);
    return res.some(Array.isArray) ? flatten(res) : res;
  }

5.使用reduce

let flatten = (arr) =>{
   return arr.reduce(
     (pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur)
   ,[])
}

6.使用toString

arr.toString().split(',');
  • 删除数组中指定元素

    let remove = (arr, item) => {
    for (let i = 0; i < arr.length; i++) {
    if (arr[i] === item) {
    arr.splice(i, 1);
    i–;
    }
    }
    return arr;
    }

  • Promise分批执行

Basic usage of firewalld

Start: systemctl start firewalld
Check status: systemctl status firewalld
Stop: systemctl disable firewalld
Disable: systemctl stop firewalld

Add port: firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent makes it permanent, otherwise invalid after restart)
Reload: firewall-cmd --reload
Delete port: firewall-cmd --permanent --remove-port=666/tcp

firewalld基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disable firewalld 禁用: systemctl stop firewalld 添加 firewall-cmd –zone=public –add-port=80/tcp –permanent (–permanent永久生效,没有此参数重启后失效) 重新载入 firewall-cmd –reload 删除 firewall-cmd –permanent –remove-port=666/tcp

vim ~/.bash_profile
export PATH=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:$PATH
# Save a exit
source ~/.bash_profile
code . # Current directory is opened.

Saw a colleague use it before, looked it up, much more convenient.

vim ~/.bash_profile
export PATH=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:$PATH
#保存退出
source ~/.bash_profile
code . #当前目录就被打开了。

之前看同事用过,找了一下方便很多

0%