当前位置: 首页 > 知识库问答 >
问题:

用于平展多维数组的函数[重复]

邢骏
2023-03-14
var flatten = function (array){
  // TODO: Program me
  var newArray = [];
  for(var i = 0; i<array.length; i++) {
    newArray.push(array[i]);
  }
  return newArray;
}

以下是例外的结果:

flatten([1,2,3]) // => [1,2,3]
flatten([[1,2,3],["a","b","c"],[1,2,3]])  // => [1,2,3,"a","b","c",1,2,3]
flatten([[[1,2,3]]]) // => [[1,2,3]]

Test result:

Test Passed

Test Passed

Test Failed: Value is not what was expected
    null

共有1个答案

吕高雅
2023-03-14

诀窍在于,如果输入数组的一个元素本身就是一个数组,那么您应该将该元素的扁平项“连接”到输入数组中,而不是将整个数组推入。

下面是一个使用“reduce”和“array.isArray(...)”的解决方案。仅在支持ECMAScript 5.1Th Edition更高规格的较新浏览器中提供:

javascript prettyprint-override">function flatten(array) {
  return array.reduce(function(memo, el) {
    var items = Array.isArray(el) ? flatten(el) : [el];
    return memo.concat(items);
  }, []);
}

flatten([1,2,3])                          // => [1,2,3]
flatten([[1,2,3],["a","b","c"],[1,2,3]])  // => [1,2,3,"a","b","c",1,2,3]
flatten([[[1,2,3]]])                      // => [1, 2, 3]
 类似资料:
  • 问题内容: 在PHP中,是否可以在不使用递归或引用的情况下展平(双向/多维)数组? 我只关心的值,这样的键可以忽略不计,我想在的线和。 问题答案: 您可以使用标准PHP库(SPL) “隐藏”递归。 版画

  • 问题内容: 我具有以下列数据的关联数组: 我需要将结构转置/旋转为行数组(将合并的列数据分配给它们各自的行)。我不需要结果中的列名。 预期产量: 问题答案: 正如Kris Roofe在删除的答案中所说,的确是一种更为优雅的方法。只要确保将其放入某种循环中即可,就像Sahil Gulati向您展示的那样。例如,像这样: 的输出正是您要寻找的

  • 我有一个JavaScript数组,如: 如何将单独的内部数组合并为一个:

  • 本文向大家介绍请实现一个flattenDeep函数,把多维数组扁平化相关面试题,主要包含被问及请实现一个flattenDeep函数,把多维数组扁平化时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 不知道这个问题是否需要删除,但是我无法在其他地方找到答案,所以我可以去询问。 我有一个二维数组,如下所示: 我想删除那些重复的电子邮件。因此,在上述示例中,我只想删除[] [0]或[] [2]。我不担心要检查名称或类似的东西,我只需要基于单个值对子数组进行重复数据删除。 此刻我有这样的事情 但这是不对的。任何帮助表示赞赏。 问题答案: 一种使用数组索引唯一性的快速解决方案: 注意1:从

  • 我想从你那里得到电话号码 使用JavaScript/jQuery。 这个系列可能会更多。