1、数组去重

1.1 使用Set去重

  1. function unique(arr) {
  2. return [...new Set(arr)]
  3. }
  4. const arr = [1, 2, 3, 4, 5, 6, 1]
  5. console.log(unique(arr))

1.2 使用filter去重

  1. function unique(arr) {
  2. return arr.filter((item, index) => {
  3. return arr.indexOf(item) === index
  4. })
  5. }
  6. const arr = [1, 2, 3, 4, 5, 6, 1]
  7. console.log(unique(arr))

2、数组扁平化

1.1 使用some循环

  1. function flatten(arr) {
  2. while (arr.some(item => Array.isArray(item))) {
  3. arr = [].concat(...arr)
  4. }
  5. return arr
  6. }
  7. const array = [1, 2, [3, 4, [5]]]
  8. console.log(flatten(array))

1.2 循环+递归

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

1.3 reduce

  1. function flatten(arr) {
  2. return arr.reduce(function(prev, next){
  3. return prev.concat(Array.isArray(next) ? flatten(next) : next)
  4. }, [])
  5. }

1.4 flat

  1. [1, [2, [3]]].flat(2) // [1, 2, 3]