相关疑难解决方法(0)

在JavaScript中合并/展平数组数组?

我有一个JavaScript数组,如:

[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]
Run Code Online (Sandbox Code Playgroud)

我将如何将单独的内部数组合并为:

["$6", "$12", "$25", ...]
Run Code Online (Sandbox Code Playgroud)

javascript arrays flatten

1001
推荐指数
36
解决办法
61万
查看次数

在JavaScript中使用递归展平嵌套数组

我试图在保留顺序的同时展平嵌套数组,例如[[1, 2], 3, [4, [[5]]]]应该转换为[1, 2, 3, 4, 5].

我正在尝试使用递归来执行此操作,但下面的代码不起作用,我不明白为什么.我知道还有其他方法可以做到这一点,但我想知道这有什么问题.

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

flatten([[1, 2], 3, [4, [[5]]]]);
Run Code Online (Sandbox Code Playgroud)

谢谢

javascript recursion

5
推荐指数
2
解决办法
6298
查看次数

JS数组串联递归展平的结果

美好的一天!

任务是获得一个数组的平面版本,可能包括一些嵌套数组以及其他元素.用于预期的输入[1, [2], [3, [[4]]]]输出[1, 2, 3, 4]. FreeCodeCamp扰流警报. 当然,会想到递归解决方案,例如:

function steamrollArray(arr) {
  var result = [];
  for(var i = 0; i < arr.length; i++){
      //part of interest
      if (Array.isArray(arr[i])){
        var nestedElements = steamrollArray(arr[i]);
        for(var j = 0; j < nestedElements.length; j ++){
          result.push(nestedElements[j]);
        }
      //</part of interest>.
      } else {
        console.log("pushing: " + arr[i]);
        result.push(arr[i]);
      }
  }
  return result;
}
Run Code Online (Sandbox Code Playgroud)

它确实是这样的.样本运行的结果将是:

pushing: 1
pushing: 2
pushing: 3
pushing: 4
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

问题是:当我们使用concat添加nestedElements …

javascript arrays recursion concat flatten

5
推荐指数
1
解决办法
1672
查看次数

Javascript 中的深平面多维数组

我想编写一个可以深度展平给定数组的函数。例如:

deepFlatten([]);         // []
deepFlatten([1, 2, 3]);  // [1, 2, 3] 
deepFlatten([[1, 2, 3], ["a", "b", "c"], [1, 2, 3]]); // [1, 2, 3, "a", "b", "c", 1, 2, 3]
deepFlatten([[3], [4], [5]], [9], [9], [8], [[1, 2, 3]]]);  // [3, 4, 5, 9, 9, 8, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我尝试递归地解决这个问题,到目前为止我已经得到了这个:

var deepFlatten = function (array){
  var result = []; 
  array.forEach(function (elem) {
    if (Array.isArray(elem)) {
        result.concat(deepFlatten(elem)); // problem probably lies here
    } else {
        result.push(elem);
    }
  });
  return result;
}; …
Run Code Online (Sandbox Code Playgroud)

javascript recursion concatenation flatten multidimensional-array

2
推荐指数
1
解决办法
3072
查看次数

递归深度扁平化的时间复杂度

这个递归展平函数的运行时间是多少?我的猜测是它是线性的;有人可以解释为什么吗?

const arr = [
  [14, [45, 60], 6, [47, [1, 2, [14, [45, 60], 6, [47, [1, 2]], 9]]], 9],
];

function flatten(items) {
  const flat = [];

  items.forEach(item => {
    if (Array.isArray(item)) {
      flat.push(...flatten(item));
    } else {
      flat.push(item);
    }
  });

  return flat;
}
Run Code Online (Sandbox Code Playgroud)

javascript recursion big-o

1
推荐指数
1
解决办法
2513
查看次数