将嵌套数组减少为格式化字符串

2024-06-23

我想减少这个嵌套数组:

const list = ['Map<%s,%s>', ['string', 'Map<%s,%s>', ['string', 'boolean']]];

这样该列表就变成:

'Map<string,Map<string,boolean>>'

这是一个开始,但递归对我来说真的很困惑:

const util = require('util');

const reduceToString = function(l){
  return l.reduceRight((a,b) => {
    if(Array.isArray(a)){
      return reduceToString(a);
    }

    return util.format(b, a);

  });
};


console.log(reduce(list));

为了更好地理解一般需要如何工作,此输入:

const list = ['Map<%s,%s,%s>', ['string', 'Map<%s,%s>', ['string', 'boolean'], 'number']];

应该产生:

'Map<string,Map<string,boolean>,number>'

The 一般规则is:字符串右侧的任何数组都应插入字符串中,并且 reduceToString 函数应始终返回字符串。


一种方法可以是“减少”作为数组的任何元素(深入到最深的级别),然后在不断从堆栈返回“下一个元素”是数组的任何元素时进行替换:

const list = ['Map<%s,%s,%s>', ['string', 'Map<%s,%s>', ['string', 'boolean'], 'Number']];

function merge(list) {
  function reduce(arr) {
    arr = arr.map(e => Array.isArray(e) ? reduce(e) : e);
    return arr
      .map((e, i) => Array.isArray(arr[i + 1])
        ? arr[i + 1].reduce((a, c) => a.replace('%s', c), e)
        : e)
      .filter(e => !Array.isArray(e));
  }
  return reduce(list)[0];
}


console.log(merge(list));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将嵌套数组减少为格式化字符串 的相关文章

随机推荐

  • 安装时 Chrome 扩展显示 CRX_REQUIRED_PROOF_MISSING

    我刚刚创建了一个供公司内部使用的 chrome 扩展 我不想发布它 而是想传递给我的同事 当我将该扩展打包到本地 chrome 中时 它给了我错误消息 CRX REQUIRED PROOF MISSING 您无法分发 Chrome 扩展程序
  • 如何在磁盘或数据库上存储稀疏可查询矩阵?

    我需要在磁盘上存储稀疏矩阵 它就像一个拥有数百万行和数千列的数据库表 其中许多或大多数列为空 它需要是可查询的 就像在某些列上带有 WHERE 的 SQL SELECT 一样 我的具体要求是Java 我首先想到使用Java 版 Berkel
  • 防止某些孩子影响 MouseEvent hitbox

    我有一个影片剪辑 用作按钮 在该影片剪辑中 当鼠标悬停在按钮上时会显示一个大阴影 我的问题是 这个阴影会影响鼠标悬停 并导致 mouseOver 和 mouseOut 事件的 捕获 区域比我想要的大得多 我尝试过禁用该子项上的鼠标事件以及我
  • Paging 3 - 如何处理自 beta01 以来出现的旧 APPEND RemoteMediator 请求?

    自版本以来beta01的 Paging 3 当从 a 刷新 PagingData 时RemoteMediator 有时会发生旧的APPEND刷新完成后 仍会执行上一代的请求 这似乎是预期的行为这次提交 https android googl
  • libgit2如何获取当前目录的状态?

    如何获取单个目录而不是整个存储库的状态 我查看了以下内容 git status list new它获取存储库状态 但我只关心位于单个目录中的文件 git status file获得单身状态 有没有办法可以使用 libgit2 获取单个目录的
  • DataGridView.Clear()

    麻烦来了 我想从 datagridview 中删除所有行 这就是我添加行的方式 private void ReadCompleteCallback object clientHandle Opc Da ItemValueResult res
  • 否定验证码 - 帮助我更好地了解垃圾邮件机器人

    我必须决定一种技术来防止垃圾邮件机器人注册我的网站 在这个问题中 我主要问的是负面验证码 我开始了解机器人的许多弱点 但想了解更多 我在某处读到大多数机器人不渲染 支持 javascript 为什么会这样呢 如何测试访问程序无法评估 jav
  • 当 JDBC 中没有明确说明时,h2 的默认用户名和密码是什么?

    我通过一个程序创建了一个 H2 数据库 而没有在 JDBC URL 中指定任何用户或密码 现在我尝试使用脚本工具访问该数据库 医生说使用 user sa在默认情况下 这不起作用 如果我添加它仍然不起作用 password sa或删除 use
  • chrome.alarms 返回未定义

    早上好 巫师们 我正在尝试自己编写铬浏览器的扩展 铬的版本是18 0 1025 151 development build 130497 Linux Built on Ubuntu 12 04 running on Ubuntu 12 10
  • 非 UI 片段与单例

    我猜非 UI 片段的主要目的是存储配置更改时保留的数据 对吗 那么 除了这个存储特定于拥有这个片段的 Activity 之外 它相对于整个应用程序中的单例模式的使用的好处是什么 这是我迄今为止一直在做的解决方案 事实上 片段的作用域仅限于其
  • mingw gcc 上的 __uint128_t

    我正在尝试在 mingw gcc 下编译 c 程序 该程序正在使用一个 uint128 t整数 当我尝试在同一台 64 位机器上的标准 ubuntu gcc 下编译它时 它完美地工作了 但是 当我尝试在 mingw 下为 Windows 编
  • 无法弄清楚如何使用 AppleScript 实现 REGEX

    我编写了一个正则表达式命令来查找并输出字符串中一行数字的第一个实例 find d d replace 1 问题是 为了在 AppleScript 中实际利用它 我知道的唯一方法是调用 shell 脚本并使用 sed 我不知道如何以这种方式实
  • 创建大型表时的 JavaScript 性能

    我有一个数据库表 我希望用户能够通过 Web UI 修改该表中的值 因此 我让后端检索表的值 通过 JSON 将它们传递给我的 Javascript 我的 Javascript 构建表示表行的对象 然后使用原型模板从数据生成 HTML 表行
  • 如何使用 EntityFramework 7 和 Asp.Net 5 调用 SQL 存储过程

    在过去的几天里 我正在寻找一些有关如何调用Stored Procedure从里面一个Web API控制器方法使用EntityFramework 7 我经历过的所有教程都以相反的方式展示它 即Code First方法 但我已经有了一个数据库
  • 动态隐藏状态栏时如何保留状态栏占用的空间?

    我倾向于隐藏状态栏 通过以下方式进行动画处理 var statusBarHidden Bool false didSet UIView animate withDuration Constants config shortAnimTime
  • Sublime Text:更改突出显示背景

    我想更改已找到的单词的所有找到实例 当您使用查找时 的颜色 我注意到 highlightBackground 键仅更改第一个实例 有没有办法更改所有找到的实例的突出显示颜色 以下示例均来自Neon Color Scheme https su
  • 如何计算SVG路径c#的面积[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果有人可以帮助计算 SVG 路径的
  • 如何将文件夹移动到具有要移动的文件夹的第一个字符名称的子文件夹中,并支持文件夹名称中的 Unicode 字符?

    我用这个批处理脚本 https stackoverflow com a 65549119 3074564写于Mofi https stackoverflow com users 3074564 mofi将文件夹移动到其他文件夹中 echo
  • Linux 分配器不会释放小块内存

    Linux glibc 分配器似乎表现得很奇怪 希望有人能对此有所启发 这是我拥有的源文件 首先 cpp include
  • 将嵌套数组减少为格式化字符串

    我想减少这个嵌套数组 const list Map