# 数组

# 扁平化

function flatten(arr) {
 let result=[]
 for (let i=0,len=arr.length;i<len;i++) {
  if (Array.isArray(arr[i])) {
   result=result.concat(flatten(arr[i]))
  } else {
   result.push(arr[i])
  }
 }
 return result
}
1
2
3
4
5
6
7
8
9
10
11

# 打乱顺序

export const shuffle = (arr) => {
  const result = [];
  let random;
  while (arr.length > 0) {
    random = Math.floor(Math.random() * arr.length);
    result.push(arr[random]);
    arr.splice(random, 1);
  }
  return result;
};
1
2
3
4
5
6
7
8
9
10

# 去重

function unique(arr) {
    let appeard=new Set()
    return arr.filter(item=>{
        //创建一个可以唯一标识对象的字符串id
        let id=item+JSON.stringify(item)
        if (appeard.has(id)) {
            return false
        } else {
            appeard.add(id)
            return true
        }
    })
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 参数数组转成json字符串

function (params = Array<{ param: string, value: string }>) {
  if (!Array.isArray(params) || !params.length) {
    return '{}';
  }

  const paramsStr = params
    .filter(item => item.param && item.value)
    .reduce((str, item, index, arr) => {
      let isJSON = false;

      try {
        JSON.parse(item.value);
        isJSON = true;
      // eslint-disable-next-line no-empty
      } catch (e) {}

      const value = isJSON ? item.value : `"${item.value}"`;
      str += `"${item.param}":${value}`;
      if (index === arr.length - 1) {
        str += '}';
      } else {
        str += ',';
      }
      return str;
    }, '{');

  return paramsStr;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28