javascript过滤数组多个条件

2024-01-18

我想简化对象数组。假设我有以下数组:

var users = [{
    name: 'John',
    email: '[email protected] /cdn-cgi/l/email-protection',
    age: 25,
    address: 'USA'
    },
    {
        name: 'Tom',
        email: '[email protected] /cdn-cgi/l/email-protection',
        age: 35,
        address: 'England'
    },
    {
        name: 'Mark',
        email: '[email protected] /cdn-cgi/l/email-protection',
        age: 28,
        address: 'England'
}];

和过滤对象:

var filter = {address: 'England', name: 'Mark'};

例如,我需要按地址和名称过滤所有用户,因此我会循环遍历过滤器对象属性并检查它:

function filterUsers (users, filter) {
    var result = [];
    for (var prop in filter) {
        if (filter.hasOwnProperty(prop)) {

            //at the first iteration prop will be address
            for (var i = 0; i < filter.length; i++) {
                if (users[i][prop] === filter[prop]) {
                    result.push(users[i]);
                }
            }
        }
    }
    return result;
}

所以在第一次迭代时prop - address将是平等的'England'两个用户将被添加到数组结果中(名为 Tom 和 Mark),但在第二次迭代时prop name将是平等的Mark只有最后一个用户应该添加到数组结果中,但我最终在数组中得到两个元素。

我对为什么会发生这种情况有一点了解,但仍然坚持下去,找不到一个好的解决方案来解决它。任何帮助都是值得赞赏的。谢谢。


你可以这样做

var filter = {
  address: 'England',
  name: 'Mark'
};
var users = [{
    name: 'John',
    email: '[email protected] /cdn-cgi/l/email-protection',
    age: 25,
    address: 'USA'
  },
  {
    name: 'Tom',
    email: '[email protected] /cdn-cgi/l/email-protection',
    age: 35,
    address: 'England'
  },
  {
    name: 'Mark',
    email: '[email protected] /cdn-cgi/l/email-protection',
    age: 28,
    address: 'England'
  }
];


users= users.filter(function(item) {
  for (var key in filter) {
    if (item[key] === undefined || item[key] != filter[key])
      return false;
  }
  return true;
});

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

javascript过滤数组多个条件 的相关文章

  • 使用 Jasmine 监视 Backbone.js 路由调用

    在主干路由器上监视方法调用时遇到问题 以确保它在给定路由上调用正确的方法 测试摘录 describe Router gt beforeEach gt router new App Router Backbone history start
  • 如何获取 CSS 旋转元素的实际(非原始)高度

    我需要获取几个不同元素的实际高度 为了精确的自定义工具提示定位 并且其中一些元素 不是全部 被旋转 elem outerHeight 返回原始高度 而不是实际显示的高度 这是一个非常简单的例子 http jsfiddle net NPC42
  • Mocha / Chai Expect.to.throw 未捕获抛出的错误

    我在获取 Chai 时遇到问题expect to throw测试我的 node js 应用程序 测试在抛出的错误上不断失败 但是如果我将测试用例包装在 try 和 catch 中 并对捕获的错误进行断言 它就会起作用 Does expect
  • C++ 中数组的正确分配和释放内存

    我正在处理动态数组 功能empty matrix 创建一个新数组 表示一个矩阵 delete matrix 释放为矩阵分配的所有内存 我的函数中是否出现内存泄漏example 如果我打电话add add a b c 函数中分配的内存会发生什
  • 自定义过滤器在 Angular Hybrid 应用程序中不起作用

    我正在尝试将 AngularJS 1 6 应用程序与 Angular 5 一起转换为混合应用程序 我定义了以下简单过滤器 function use strict var filterId colorPicker angular module
  • Internet Explorer 的数组indexOf 实现

    有很多关于如何将 indexOf 实现放入数组原型中以便它可以在 Internet Explorer 下工作的解决方案 但是我偶然发现了一个问题 到目前为止我所看到的任何地方似乎都没有解决这个问题 使用非常一致的MDC 的实施 https
  • 如何从回调函数中获取值

    我对 javascript 比较陌生 并且面临一些困难 我有两个 java 脚本文件 如下所示 我无法获取变量的值条目标题在 getRss 函数内并将其存储在变量内Rss1 标题 and Rss2 标题 创建一个全局变量并将其分配给条目标题
  • 所有属性的 JavaScript getter

    长话短说 我现在的情况是想要一个 PHP 风格的 getter 但是是 JavaScript 的 我的 JavaScript 仅在 Firefox 中运行 因此 Mozilla 特定的 JS 对我来说没问题 我能找到的制作 JS gette
  • 将函数应用于 3D numpy 数组

    我有一个来自 Image PIL Pillow 对象的 numpy 3D 数组 178 214 235 180 215 236 180 215 235 146 173 194 145 172 193 146 173 194 126 171
  • 在 C 中声明和初始化数组

    C 有没有办法先声明然后初始化数组 到目前为止 我一直在初始化一个这样的数组 int myArray SIZE 1 2 3 4 但我需要做这样的事情 int myArray SIZE myArray 1 2 3 4 在 C99 中 您可以使
  • JavaScript 中的自定义“确认”对话框?

    我一直在开发一个使用自定义 模式对话框 的 ASP net 项目 我在这里使用吓人引号 因为我知道 模式对话框 只是我的 html 文档中的一个 div 它被设置为出现在文档其余部分的 顶部 而不是真正意义上的模式对话框 在网站的许多部分
  • 不用AJAX,前台同步拖放文件上传?

    我有一个定期的网站
  • 同一脚本但具有不同输入参数的 SLURM sbatch 作业数组并行运行

    我遇到一个问题 我需要启动相同的脚本但使用不同的输入参数 说我有一个脚本myscript py p
  • 如何使用 jQuery AJAX 和 JSON 通过 Bootbox 确认表单提交

    我正在使用一个网络应用程序工作Spring MVC 我试图在提交表单之前显示一个确认对话框Bootbox 但我收到 500 内部服务器错误 这是我的表格
  • 如何在 Android 设备(平板电脑和手机)方向更改时获得正确的窗口宽度

    我正在尝试使用 jquery 函数计算 Android 设备方向变化时的窗口宽度 window outerWidth true 此计算给出了两个方向变化的正确宽度iphone and ipad但在安卓中不行 如果我最初以横向模式或纵向模式加
  • 为什么 `BehaviorSubject` 不发出最后一个值

    The 关于BehaviorSubject的文档 http reactivex io documentation subject html声明它应该返回最后发出的值 无论我何时订阅 但它不会为我返回它 const ofObservable
  • 如何使用 Browserify 获取 html 模板

    我正在尝试找出一种简单的方法 在脚本中需要 html 模板 然后从 CLI 运行 browserify 假设我想获取一个模板并将其附加到正文中 index js var template require template html docu
  • jQuery 存储类型未定义

    我用了一个jQuery 存储 https ui5 sap com api jQuery sap storage存储数据 oStore jQuery sap storage jQuery sap storage Type local oSto
  • 获取不正确的日期,将时间戳转换为新日期

    我正在尝试将时间戳转换为日期 但得到的日期不正确 我正在开发一个使用 Angular 和 Typescript 的项目 我有这样的时间戳 1451642400 2016年1月1日 和1454320800 2016年2月1日 如果我编码 da
  • 如何通过 jQuery onblur 提交表单

    所以我尝试通过 jQuery onblur 提交表单 即一旦焦点离开密码字段 表单就会通过 jQuery 提交 有类似的问题 但这不是我要找的 我尝试使用 document getElementById 但它不起作用 任何帮助表示赞赏 提前

随机推荐

  • Hazelcast 专用节点

    在专用服务器上运行 Hazelcast 节点的最简单方法是什么 我们有一个使用 Hazelcast 分布式地图的 Web 应用程序 目前 Hazelcast 节点配置为在 Servlet 容器节点中运行 随着规模的扩大 我们希望添加专用硬件
  • AngularJS $timeout 函数未在我的 Jasmine 规范中执行

    我正在尝试使用 Karma 与 Jasmine 测试我的 AngularJS 控制器 但一个 timeout这在现实生活中运行良好 但却使我的测试崩溃 控制器 var Ctrl function scope timeout scope do
  • 在网站上查找一个单词并获取其页面链接

    我想抓取一些网站 看看那里是否存在 katalog 一词 如果是 我想检索该单词所在的所有选项卡 子页面的链接 可以这样做吗 我尝试按照本教程进行操作 但最终得到的 wordlist csv 是空的 即使网站上确实存在单词目录 https
  • 如何将图像裁剪为圆形且圆形内有网格

    In my Social media app i want image Cropping Functionality that Crop image in Circle shape plus have Grid inside Circle
  • 如何在 Rails 中以简单形式添加开关切换按钮

    我正在使用 Rails 4 和 Simple Form with Bootstrap 我希望我的复选框不会那样 但类似的东西 我有CSS
  • 使用 #include 和包含防护在单独文件中进行 C++ 继承

    我是 Stack Overflow 的新手 正在自学 C 但我仍然是一个初学者 在完成了我正在使用的书中的大部分内容 可能被认为是过时的和 或不是一本好书 后 我决定通过自己尝试来重新强化一些概念 仅在需要时参考这本书 但我似乎被卡住了 我
  • 如何在 Python 中正确使用 re.sub() 进行迭代

    我想制作一个创建脚注的 Python 脚本 这个想法是找到该排序的所有字符串 Some body text Some footnote text 并将它们替换为 Some body text where 是正确的脚注编号 我的脚本的另一个部
  • 将 Quick BASIC 转换为 VB.Net - 随机访问文件

    我正在尝试将旧的 Quick BASIC 程序转换为 VB Net 旧文件语句似乎没有任何直接替代 对于我的简单需求来说 构建数据库似乎有点大材小用 如何在 VB Net 中执行以下操作 OPEN test dat FOR RANDOM A
  • 如何引用数组列表中的数组元素?

    我创建了一个LinkedList of String arrays public static void main String args String one new String 10 String two new String 10
  • 在 JTextPane 中显示乌尔都语字符

    如何显示单个Urdu http en wikipedia org wiki Urdu中的字符JTextPane http docs oracle com javase 6 docs api javax swing JTextPane htm
  • 如何将 QProcess 的输出定向到文件?

    我想要的输出qconf重定向到test settings txt在我的 tmp 文件夹中 我想到了两种可能性 QProcess procWriteProject procWriteProject start qconf QStringLis
  • JQuery 将克隆输入更改为空

    我试图克隆一个包含输入和文本区域的类 并将它们的值变为空 var current item last current clone insertAfter current current find input textarea val 问题在
  • 从 Visual Studio Code 将 Vue.js 应用程序部署为 Azure 应用程序服务

    我有一个 Vue js 应用程序 这个应用程序是使用创建的Vue Cli https cli vuejs org 此时 这是一个基本的 hello world 应用程序 我的本地计算机上运行着这个应用程序 我通过使用运行它npm run s
  • 如何将数据点与理论联系起来?

    DataPoints public static final Integer input1 1 2 Theory Test public void test1 int input1 DataPoints public static fina
  • 重构这个基本代码,确定数字是否为数十、数百、数千等

    if n lt 100 x 10 else if n lt 1000 x 100 else if n lt 10000 x 1000 else if n 等等等等 对于此类问题 是否有一种简洁 可扩展的方法 我的大脑决定停止工作 var x
  • 挂钩容器请求 LDAP 用户角色的进程

    在我的应用程序中 我使用带有 LDAP 领域的基于表单的身份验证 对于授权 我使用数据库 据我了解 其工作原理如下 App gt user pass gt LDAP lt OK user exists gt ask for security
  • Ruby 检查可读性?

    有没有办法使检查的输出更具可读性 在 Perl 中 有Data Dumper这使得输出更容易阅读 ruby 标准库包含 PP Pretty Print 的缩写 它比标准检查更好地格式化结构 http www ruby doc org std
  • 如何确定目标MAC地址

    我的应用程序在 CentOS 5 5 上运行 我需要使用 libpcap API 发送原始数据包 pcap inject or pcap sendpacket 到特定的IP地址 如何确定 MAC 地址属于特定目标 看起来你想要的是ioctl
  • 内存屏障和 TLB

    内存屏障保证数据缓存的一致性 但是 它能保证TLB的一致性吗 我发现一个问题 在线程之间传递 MappedByteBuffer 时 JVM java 7 update 1 有时会因内存错误 SIGBUS SIGSEG 而崩溃 e g fin
  • javascript过滤数组多个条件

    我想简化对象数组 假设我有以下数组 var users name John email email protected cdn cgi l email protection age 25 address USA name Tom email