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

javascript中的扁平数组[重复]

乔望
2023-03-14

我对递归是新手。我可以将数组展平并以普通数组的形式返回,但如果我想将数组展平并将其存储在对象中并返回值,由于某种原因,我会丢失前面结果的值,如果你能帮助我,那就太好了。PS:我可以通过每次迭代发送结果作为参数来做到这一点,但我想这样做,所以…

const flatten = (nums) => {
  result = {
    number: [],
  };
  console.log(result);
  for (let num of nums) {
    if (Array.isArray(num)) {
      result = {
        ...result,
        ...flatten(num),
      };
    } else if (typeof num === "number") {
      result = { ...result, number: [...result.number, num] };
    }
  }
  return result;
};

console.log(flatten([[1, 2], [3, [6, [1, 2, 3]], [4, [5]]], [1]]));

我甚至尝试了下面的方法,我知道我犯了一些错误,只是我找不到确切的位置

const flatten = (nums) => {
  return nums.reduce(
    (acc, ele) => {
      if (Array.isArray(ele)) {
        acc = { ...acc, num: [...flatten(ele)] };
      } else {
        acc = { ...acc, num: [...acc.num, ele] };
      }
      return acc;
    },
    { num: [] }
  );
};
result={
  number:[1,2,3,6,1,2,3,4,5,1]
} 

{
  number:[1,2,3,6,1,2,3,4,5,1]
} 

共有1个答案

孟财
2023-03-14

您还可以使用带有递归的Array.Reduce()方法来完成此操作。

const items = [1, 2, 3, [5, 5], [[8, 9]], [99], 125];
    
    function flatArray(items) {
      return items.reduce((arrayData, element) => {
        if (Array.isArray(element)) {
          arrayData = [...arrayData, ...flatArray(element)];
        } else {
          arrayData = [...arrayData, element];
        }
        return arrayData;
      }, []);
    };
    
    console.log(flatArray(items));
    // [1, 2, 3, 5, 5, 8, 9, 99, 125]

    const result = {
       number: flatArray(items),
    };
 类似资料:
  • 我有以下熊猫系列 我需要将此更正为csv。但我需要列表中的每个项目作为单独的列。例如:在第一行中,1、11283、1、5应该是单独的列

  • 如我们所知,要使用方法对数组进行展平 那么如何将这个数组平坦化为呢?

  • 我想创建一个数组,使其包含一些标识名,并且对于这些名称中的每一个,都有另一个关联的数组。我的做法是,, 执行此操作后,我得到如下结果:, 下次调用此函数时,我需要检查1-1是否存在,如果存在,我需要获取与1-1相关的列表。我该怎么做。。?如果1-1不在myArray中,我将调用其他函数。

  • 本文向大家介绍Python分组扁平化列表,包括了Python分组扁平化列表的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序,将包含子列表的列表展开。给定的数字将子列表展开,直到给定的数字索引作为部分。让我们看一个例子来清楚地理解它。 输入项 输出结果 让我们看看解决问题的步骤。 初始化列表和编号。 初始化一个空列表。 使用范围(0,len(lists),number遍历列表

  • 本文向大家介绍JS数组扁平化、去重、排序操作实例详解,包括了JS数组扁平化、去重、排序操作实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS数组扁平化、去重、排序操作。分享给大家供大家参考,具体如下: 在网上看到一个校招题目,已知一个数组var arr = [[1, 3, 2, 1],[5, 3, 4, 8, 5, 6, 5],[6, 2, 8, 9, [4, 11, 15, 8

  • 问题内容: 我有一个这样的清单: 此列表中的每个项目可能包含一个数据对或一个元组,我想将此列表更改为 然后这样做: 我不知道如何更改列表结构,或者如何基于原始列表进行相同的计算? 问题答案: 如果您只想整理列表,请使用:http : //docs.python.org/library/itertools.html#itertools.chain.from_iterable