arrayFlattening.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /**
  2. *
  3. * @desc 数组扁平化
  4. * @param {Array} arr
  5. * @return {Array}
  6. */
  7. // 第一种方法:
  8. function arrayFlattening(arr) {
  9. var newArr = [],
  10. _this = this;
  11. for (var i = 0; i < arr.length; i++) {
  12. if (Array.isArray(arr[i])) {
  13. // 如果是数组,调用(递归)arrayFlattening 将其扁平化
  14. // 然后再 push 到 newArr 中
  15. newArr.push.apply(newArr, _this.arrayFlattening(arr[i]));
  16. } else {
  17. // 不是数组直接 push 到 newArr 中
  18. newArr.push(arr[i]);
  19. };
  20. };
  21. return newArr;
  22. };
  23. // 第二种方法:
  24. // function arrayFlattening(arr) {
  25. // var newArr = [];
  26. // for (var i = 0; i < arr.length; i++) {
  27. // if (Array.isArray(arr[i])) {
  28. // // 如果是数组,调用(递归)arrayFlattening 将其扁平化
  29. // // 然后再 push 到 newArr 中
  30. // newArr = newArr.concat(arrayFlattening(arr[i]));
  31. // } else {
  32. // // 不是数组直接 push 到 newArr 中
  33. // newArr.push(arr[i]);
  34. // };
  35. // };
  36. // return newArr;
  37. // };
  38. // 第三种方法:
  39. // function arrayFlattening(arr) {
  40. // while (arr.some((item) => Array.isArray(item))) {
  41. // arr = [].concat(...arr);
  42. // };
  43. // return arr;
  44. // };
  45. module.exports = arrayFlattening;