对象数组中属性值的递归数组

2023-12-01

我需要的是一个属性值数组,从对象数组中递归收集,这就是我的意思:

const regions = [{
  name: 'Europe',
  subRegions: [{
    name: 'BeNeLux',
    territories: [{
      code: 'NL',
      name: 'Netherlands'
    }, {
      code: 'DE',
      name: 'Germany'
    }, {
      code: 'LU',
      name: 'Luxembourgh'
    }]
  }],
  territories: [{
    code: 'UK',
    name: 'United Kingdom'
  }, {
    code: 'AL',
    name: 'Albania'
  }, {
    code: 'ZW',
    name: 'Switzerland'
  }]
}]

我想获取所有国家/地区代码的数组regions array.

So like:

const expectedOutput = ['NL', 'DE', 'LU', 'AL', 'ZW', 'UK'];

这是我尝试过的,部分有效,但没有正确收集它(我也很好奇探索不同/功能设置来解决这个问题)

const getAllTerritoryCodesFromRegions = regions => {
  return regions
    .reduce(function r (output, region) {
      if (region?.subRegions?.length) {
        output.subRegions = region.subRegions.reduce(r, output)
      }

      if (region?.territories?.length) {
        output = [
          ...output,
          ...region.territories.map(t => t.code)
        ]
      }

      return output
    }, [])
}

您可以通过查找数组并返回代码来减少数组。

function getCodes(array) {
    return array.reduce((r, o) => {
        if ('code' in o) {
            r.push(o.code);
            return r;
        }
        Object.values(o).forEach(v => {
            if (Array.isArray(v)) r.push(...getCodes(v));
        });
        return r;
    }, []);
}

const
    regions = [{ name: 'Europe', subRegions: [{ name: 'BeNeLux', territories: [{ code: 'NL', name: 'Netherlands' }, { code: 'DE', name: 'Germany' }, { code: 'LU', name: 'Luxembourgh' }] }], territories: [{ name: 'United Kingdom', code: 'UK' }, { name: 'AL', code: 'Albania' }, { name: 'ZW', code: 'Switzerland' }] }],
    codes = getCodes(regions);

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

对象数组中属性值的递归数组 的相关文章

随机推荐

  • 如何允许通过 http 匿名推送到 git 存储库?

    我在这里找不到例子 http www kernel org pub software scm git docs git http backend html 是否可以 将其添加到您的 httpd conf 假设 srv git 包含您的存储库
  • 我可以使用 SQLite 作为基于云的网站的数据库存储吗?

    有没有人启动过使用本地 SQLite DB 作为主要数据源的基于云的应用程序 网站 有这方面的警告吗 我的环境 C 3 0 应用程序 目前使用sql server 2008 db 当前数据库大小 30 mb 如果您预计会有大量流量 那么您确
  • Excel 根据名称查找工作表

    这不是一个问题 而是一个解决方案 但我想在这里分享它 因为我在这里得到了我需要的帮助 我想在活动工作簿中查找特定的 Excel 工作表 并按工作表名称进行搜索 我构建这个是为了找到它 这是一个 包含 搜索 如果找到 会自动转到工作表 或者询
  • web2py 中的复合键

    我在 web2py 中定义了一个表 db define table pairing Field user writable True readable True Field uid writable True readable True 该
  • Chart Js V2 在垂直条上绘制水平条(平均)

    我想在垂直条上绘制一个条 绿色条 我正在使用 Chart JS V2 和 Angular 4 我找到了一些画线的代码 但它在 Angular 4 中不起作用 我用过也尝试过使用annotation但它不起作用 添加注释的命令 npm 安装
  • 如何在 Windows XP 上使用 Perl 运行可执行文件?

    如何使用perl运行可执行文件 例如 我想运行一个普通的 notepad exe 我怎样才能做到这一点 这就是我所拥有的 my args system notepad exe system args 0 or die system args
  • 如何实现像uber android一样的可拖动地图,随位置变化而更新

    如何实现像uber一样的可拖动地图 我正在使用谷歌地图 v2 实际上我得到了解决方案这个帖子并在这里分享我的完整解决方案 使用最新代码进行更新还包括使用自动完成功能更改位置 完整的项目可以找到here 逻辑很简单我们需要一个framelay
  • 从文件将用户导入 ASP.NET 成员身份

    我有一个使用 ASP NET 会员资格的网站 我还有一个 Excel 文件 其中包含大约 60 条用户记录 如何将记录导入到成员资格数据库中 而无需在 ASP NET 网站管理工具中键入全部 60 条记录 谢谢 foreach record
  • 使用 App Inventor 2 过滤 url JSON 结果

    我正在尝试使用 App Inventor 2 过滤 JSON url 结果 遵循以下示例代码here1 and here2 但我仍然无法正确完成它 我一次只能得到一个结果 JSON结果为如下图所示形式的数据 field1 alphaNume
  • Z-index 没有覆盖 DOM 中更下方的 div

    我正在尝试创建一个类似工具提示的系统 其中 mouseenter 事件会导致显示一个 div 该 div 将覆盖内容 不幸的是我遇到的问题是内容laterDOM 中的内容在 IE7 中并没有消失 而之前的内容在 z 索引元素后面正确消失 这
  • 查找具有特定字符串的 svn:external 属性的路径?

    我有一个非常大的 Subversion 存储库 大小约为 7 GB 包含来自不同项目的许多文件和目录 现在我对一个项目结构做了一些重大更改 它实际上是一个库 并且我在同一存储库中的很多其他项目中使用它 现在文档很少 我不知道哪个项目实际上真
  • 如何在 REST Assured 中传递默认解析器?

    我正在尝试使用 REST Assured 自动化 API 以下是我在执行 API 测试用例期间遇到的错误 testNotifications com api truValue test notifications Notifications
  • opencv如何在光流后跟踪物体?

    对视频进行光流 lk 后 根据此数据查找对象并跟踪它们的最佳方法是什么 这可能听起来很菜鸟 但我希望能够在物体周围定义清晰的轮廓 所以如果它是一个形状奇怪的瓶子或其他东西 就能够检测边缘 我不确定 LK 是最好的算法 因为它计算一组稀疏的角
  • FCM - 重新调试应用程序后发送消息时出现 Android Xamarin NotRegistered 错误

    我正在 Xamarin Android 中开发一个应用程序 对于通知 我使用 FCM 预发布包 https www nuget org packages Xamarin Firebase Messaging 现在 如果我清理应用程序数据 一
  • 如何将相似名称的文件复制到文件夹中?

    我正在创建一个归档系统 需要将文件分类到文件夹中 我通过在 Excel 工作表中提及文件夹名称来自动创建文件夹 现在我需要复制相应文件夹中具有相似名称的文件 例如 将创建一个名为 Ashley Davidson 的文件夹 一个源文件夹中且文
  • 如何为 php Web 应用程序管理不同国家/地区的不同用户的时区?

    我正在开发网络应用程序 该应用程序有来自不同国家的不同用户 我曾经使用 UTC 时间戳来管理他们的注册 这对我来说可以 但是当我检查帐户的到期日期时出现问题 例如 假设注册有效期为 15 天 来自印度的用户 其注册日期为亚洲 加尔各答时区的
  • html lang 属性的 html 验证错误

    我收到此错误消息 该文档似乎是 Lorem ipsum 文本 但 html 开始标记有 lang en 考虑使用 lang zxx 或变体 从第 5 行第 32 列开始 至第 5 行 第 47 列 html lang en 如需进一步指导
  • Magento simplexml_load_string()错误位置

    我有一个非常烦人的问题 当我对 Magento 商店进行一些修改时 我遇到了 simplexml load string 错误 我很清楚这个错误是由一些错误的 XML 文件引起的 但对我来说非常重要的问题是哪个文件以及它位于哪里 这是我收到
  • 使用RxJava 2和Retrofit 2,适配器版本问题

    我在 Android Studio 中的现有应用程序模块中添加了一个新的库模块 主要区别是添加了 RxJava 2 和 Retrofit 2 更新新模块的 build gradle 后 我开始收到下一个错误 错误 任务 app transf
  • 对象数组中属性值的递归数组

    我需要的是一个属性值数组 从对象数组中递归收集 这就是我的意思 const regions name Europe subRegions name BeNeLux territories code NL name Netherlands c