使用 Lodash/Javascript 过滤嵌套数组

2024-02-21

我有以下对象数组:

var sizeList = [
    { id: 1, title:"Test1",
        type:[{name:"Big", present:false}, {name:"Small", present:true}, {name:"Medium", present:false}]
    },

    { id: 2,title:"Test2",
        type:[{name:"Big", present:false}, {name:"Small", present:true}, {name:"Medium", present:false}]
    },
    { id: 3,title:"Test3",
        type:[{name:"Big", present:false}, {name:"Small", present:true}, {name:"Medium", present:true}]
    }
  ]

我想过滤此列表,其中 Medium 为 True。我目前已经这样设置了。

var specificSizes = _.filter(sizeList.type, { 'name': 'Medium', 'present': true })

这会不断返回一个空数组。我也尝试过这个:

       specificSizes = _.filter(sizeList.type, function (type) {
          return _.some(type, {'name': 'Medium', 'present':true})
        });

使用 lodash,您可以将条件包装在与原始对象相同的结构中进行测试。

_.filter(sizeList, { type: [{ name: 'Medium', present: true }] })
var sizeList = [{ id: 1, title: "Test1", type: [{ name: "Big", present: false }, { name: "Small", present: true }, { name: "Medium", present: false }] }, { id: 2, title: "Test2", type: [{ name: "Big", present: false }, { name: "Small", present: true }, { name: "Medium", present: false }] }, { id: 3, title: "Test3", type: [{ name: "Big", present: false }, { name: "Small", present: true }, { name: "Medium", present: true }] }],      
    result = _.filter(sizeList, { type: [{ name: 'Medium', present: true }] });

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

在普通的 Javascript 中,你可以使用Array#filter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter对于外部数组并检查Array#some https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some如果满足一个条件。

var sizeList = [{ id: 1, title: "Test1", type: [{ name: "Big", present: false }, { name: "Small", present: true }, { name: "Medium", present: false }] }, { id: 2, title: "Test2", type: [{ name: "Big", present: false }, { name: "Small", present: true }, { name: "Medium", present: false }] }, { id: 3, title: "Test3", type: [{ name: "Big", present: false }, { name: "Small", present: true }, { name: "Medium", present: true }] }],      
    result = sizeList.filter(function (a) {
        return a.type.some(function (b) {
            return b.name === 'Medium' && b.present;
        });
    });
  
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Lodash/Javascript 过滤嵌套数组 的相关文章

  • 使用 jQuery Select2 清除下拉菜单

    我正在尝试使用奇妙的方式以编程方式清除下拉菜单Select2 http ivaynberg github com select2 图书馆 使用 Select2 远程 ajax 调用动态填充下拉列表query option HTML
  • 在随机位置启动 HTML5

    我有一个大约 2 小时长的音轨 我想在我的网站上使用它 我希望它在页面加载时在随机位置开始播放曲目 使用 HTML5 可以吗 我知道您可以使用 element currentTime 函数来获取当前位置 但是如何在完全下载之前获取曲目的总时
  • 水平滚动的表格上的“粘性”标题......完全不可能?

    经过过去几个小时的研究后 我开始认为这是不可能的 即使在最新的浏览器上也是如此 HTML table具有水平滚动的元素 带有 粘性 thead在顶部 作为垂直滚动的周围网页的一部分 这是我的尝试 a height 100px backgro
  • 如何在不阻止触摸启动的情况下防止“过度滚动历史导航”?

    我正在实现基于滑动的导航 但我在使用 Chrome 时遇到了麻烦 当页面向右拖动时 会触发新实现的功能 过度滚动历史导航 从而导致跳回 到 历史 1 为了防止这种情况 我必须打电话 preventDefault on touchstart
  • R中的字典数据结构

    在 R 中 我有 例如 gt foo lt list a 1 b 2 c 3 如果我输入foo I get a 1 1 b 1 2 c 1 3 我怎样才能看透foo仅获取 键 列表 在这种情况下 a b c R 列表可以具有命名元素 因此可
  • 如何立即启动setInterval循环? [复制]

    这个问题在这里已经有答案了 在一个简单的setInterval setInterval function Do something every 9 seconds 9000 第一个动作将在 9 秒后发生 t 9s 如何强制循环立即执行第一个
  • API 使用令牌向 odoo 进行身份验证

    我想使用令牌从 Express 应用程序向 Odoo 进行身份验证 我在用odoo xmlrpc https www npmjs com package odoo xmlrpc连接 Odoo 的节点模块 我的快递应用程序 Odoo 要求 A
  • C++:向 std::sort 提供模板化比较函数

    假设我想让 std sort 根据指针指向的 int 值对指向 int 的指针向量进行排序 忽略那里明显的性能问题 很简单吧 做一个函数 bool sort helper const int a const int b return a l
  • C# List 内部结构

    将对象添加到集合 例如 List 时到底会发生什么 List
  • 更改API数据输出的布局

    我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
  • jQuery 表格排序

    我有一个非常简单的 HTML 表格 有 4 列 Facility Name Phone City Specialty 我希望用户能够排序设备名称 and City only 我如何使用 jQuery 进行编码 我发现了这个 我想我应该投入
  • JavaScript 将键添加到数组中的每个值

    我下面有这个数组 它由一个简单的数组组成 我想要完成的是放一把钥匙id在每个数组值前面以实现类似的效果 id a id b id c id d 有没有一种简单的方法可以做到这一点 任何帮助将不胜感激 谢谢 var test a b c d
  • 如何在 React Native 上显示 SVG 文件?

    我想显示 svg 文件 我有一堆 svg 图像 但我找不到显示的方式 我尝试使用Image and Use的组成部分反应本机 svg https github com magicismight react native svg但他们不这样做
  • 为什么在 JavaScript 中 if([]) 被验证而 [] == false ?

    if false alert empty array is false alert alert 0 if alert empty array is true 他们都会运行警报 Demo http jsfiddle net roine ZFD
  • 如果没有 /// 标签,TypeScript 的“将 JavaScript 输出合并到文件中”选项无法推断出正确的脚本顺序

    我正在开发一个使用 将 JavaScript 输出合并到文件中 选项的 TypeScript 解决方案 我经常引用另一个文件中定义的项目 例如 In MyBaseClass ts export class MyBaseClass In My
  • 每个术语出现的次数

    我得到了一个数组a n 2 where n can be 10 5最大时有n个科目和n个学生 全部编号为 1 2 n a i 0 and a i 1 1 lt i lt n 表示在第 i 个科目中 所有来自a i 0 to a i 1 通过
  • 模板中带有 ng-if 的 angularjs 指令

    我正在构建一个在模板内使用 ng if 的指令 奇怪的是 提供给链接函数的元素没有扩展ng if代码 它只是ng if的注释行 经过一番尝试 我发现通过将链接代码包装在 timeout 中似乎可以使其正常工作 但我想知道这是否不是正确的处理
  • 摩纳哥:如何添加内联自动完成/代码建议?

    我找不到任何有关如何添加内联自动完成功能的示例 如下图所示 有人可以指导我如何在摩纳哥做到这一点吗 这可以在 v1 66 中启用 现在在 Insiders 中 The editor quickSuggestions设置现在接受内联为 配置值
  • d3.event.translate 在触摸设备的缩放上包含 NaN

    我使用 d3 为我的 svg 编写了一个自定义缩放函数 如下所示 Zoom behavior function myzoom xpos d3 event translate 0 ypos d3 event translate 1 vis a
  • ng-include 和 ng-view 不同时加载

    下面是我的应用程序的结构 很简单 页眉和页脚是非常小的文件 而主页上的 ng view 要大得多 当我进入该页面时 我注意到了这一点 首先加载两个 ng include 然后 ng view 出现 页脚被推到底部 页脚闪烁大约 0 1 秒

随机推荐

  • Android SDK Mediaplayer.create随机返回null

    我遇到一个问题 即使音频文件确实存在 MediaPlayer create 方法偶尔也会返回 null 事实上 如果我将 create 调用放入 while 循环中 媒体播放器最终将创建成功 这似乎只发生在我的手机 运行 2 1 的 HTC
  • 在命令行上检查音频文件的持续时间

    我需要检查一组音频文件的持续时间 有没有一种简单的方法可以在 unix 命令行上执行此操作 gt duration 我有一个令人惊叹的 SoX 应用程序 它有一个名为 统计 的选项 可以生成一组包括持续时间的音频信息 我正在寻找一种只获得持
  • 记住在单选 AlertDialog 中选择的内容

    我有一个AlertDialog它将数组显示为单个选定的选项 protected boolean blFrom blTo protected void showSelectToDialog boolean checkedDate new bo
  • 如何使用按行分列来获取频率计数?

    我有一个数据框 用于跟踪个人 x Bob 在感兴趣的时间范围 1900 1999 年 内的服务参与情况 srvc inv 1 0 library tidyverse dat lt data frame name rep Bob 100 da
  • 有工作要做时挂起并通知线程

    我有多个线程 在 IIS 上运行的 C 应用程序 正在运行 所有线程都需要与同一个 MQ 后端进行通信 为了最大限度地减少网络流量 我只需要在有工作要做时发送后端请求 将有一个线程来监视是否有工作要做 并且它需要通知其他线程它们也应该开始处
  • Mac 上 Boost 的链接器错误 (OSX 10.10.02 | Xcode 6.1.1)

    最近我开始在 Windows 上使用 Boost 来完成一个项目 它需要跨平台 所以我也在Mac上安装了它 很遗憾 每当我将它添加到 Xcode 项目时 它都会给我带来大量链接器错误和转换警告 链接器错误之一的示例 体系结构 x86 64
  • 如何使用 codeigniter cart 类删除单个购物车项目?

    我正在为我的购物车项目使用 codeigniter cart 类 我的购物车中有很多商品 现在我有了购物车行 ID 现在我真正需要做的是 需要从购物车中删除特定的商品 而不是所有内容 销毁购物车 cartcontents this gt c
  • 在 .net 中使用 selenium 2.0 Web 驱动程序的示例/教程?

    有没有使用 selenium 2 0 Web 驱动程序与 net 的教程 示例 我尝试过搜索 但只能找到 java 没有找到有关 net 和 selenium 2 0 Web 驱动程序的信息 这里的文档有一个 C 示例 http selen
  • 使用 OpenPGP 子项签名提交失败

    我想使用我的 GPS 2 子项之一在 Git 中签署提交 标签 即 我新创建的 RSA4096 仅签名密钥 其长 ID B0 sec ed25519 9F 2016 01 07 expires 2023 01 05 Key fingerpr
  • 函数内的时间戳比较

    为了防止旧版本覆盖新版本 在这个简单的函数中 create function myupdate paramts timestamp without time zone language plpgsql AS begin step 1 com
  • Swift如何改变backIndicatorImage的tintColor

    我在 AppDelegate 中得到了这段代码 U INavigationBar appearance backIndicatorImage imageLiteral resourceName backarrow 即使图像的颜色是白色 它也
  • 类型错误:(0,_mockingooose.default)不是函数_mockingooose

    我正在尝试使用以下代码来模拟我的猫鼬模式 report schema js import mongoose Schema from mongoose const reportSchema new Schema data type strin
  • Patchwork 无法识别具有 ggMargnial 分布元素的图

    尝试显示 2 个图gg边际但这些情节并未得到认可 我将代码的简化版本粘贴到下面的位置 Before添加 ggMarginal 元素 Patchwork 按预期并排显示 ggplots After使用 ggMarginal 添加边际分布 Pa
  • 在 Git 中跨分支共享文件

    我的项目中有很多文件有时会被修改 但总是在许多不同的分支之间共享 示例包括构建脚本 包含路径的批处理文件等 甚至 gitignore 文件本身也是一个示例 我希望这些东西在源代码管理中 但我不希望各个分支跟踪它们的更改 你如何处理这种情况
  • Android Studio + Spek 集成

    我正在尝试将 Spek 测试框架添加到我的 Android Studio 项目中 按照说明进行操作Here http spekframework org docs latest 我最终将以下内容添加到我的模块中build gradle te
  • Qt 托盘图标拖放

    有谁知道是否可以使用 Qt 对托盘图标进行拖放操作 我一直在做一些研究 这是我得出的结论 QSystemTrayIcon 无法显式处理拖 放事件 不过 有一种基于 Spifftastic 托盘图标定位方法的解决方法 您创建一个独特的彩色图标
  • 带有 Ionic 3 的 Google Maps Native cordova 插件仅显示灰色框

    我试图显示地图 但我得到的只是一个底部带有谷歌徽标的灰色框 我查看了该网站上的其他帖子 并尝试了所有这些帖子 但似乎都没有解决该问题 我正在使用 ionic 3 12 0 和 cordova 插件 googlemaps 2 0 7 我已确保
  • 输出 iso8601 中的 Ruby 持续时间

    我希望在 ruby on Rails 中为 schema org 以 iso8601 格式输出持续时间 我已经知道如何输出 iso8601 中的时间戳 例如video created at iso8601 我现在想做的是输出以下格式的内容
  • 帕斯卡三角形

    我正在使用 python 脚本寻找帕斯卡三角形 我已经完成到这里了 不知道如何添加 numstr raw input please enter the height height int tri row1 1 row2 1 1 tri ap
  • 使用 Lodash/Javascript 过滤嵌套数组

    我有以下对象数组 var sizeList id 1 title Test1 type name Big present false name Small present true name Medium present false id