根据值过滤对象数组

2024-07-01

有没有办法通过可能存在于任何属性中的特定值来过滤对象数组?

假设我有这个对象:

var x = [
    {
        name: "one",
        swp: "two"
    },
    {
        name: "two",
        swp: "three"
    },
    {
        name: "aa",
        swp: "bb"
    }
];

With Array.prototype.filter我可能会做

x.filter(function(y){ return y.name == "two"; });

然而,这将仅返回在其任何属性中具有“two”作为值的两个对象中的一个。

Whereas

function findValue( value ) {
  var y = [];
  for (obj in x) {
    for (val in x[obj]) {
      if (x[obj][val].match( value )) {
        y.push(x[obj]);
      }
    }
  }
  return y;
}

可以完成这项工作,但这是一种蛮力方法。 有没有更好的方法来达到相同的结果?


var arrOfObj = []; // objects you're sifting
var prop = 'whatever';

var matches = arrOfObj.filter(obj => Object.keys(obj).some(k => obj[k] === prop));

你想要一个组合Array.prototype.filter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter and Array.prototype.some https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/some如果数组中的任何元素与条件匹配,它会返回一个布尔值,一旦找到匹配项,它也会停止迭代数组(在本例中是每个对象的键)。如果你需要跨浏览器支持(并且由于某种原因不使用 babel),上面的 ES 5 版本是

var arrOfObj = []; // objects you're sifting
var prop = 'whatever';

var matches = arrOfObj.filter(function(obj) { 
  return Object.keys(obj).some(function(k) { 
    return obj[k] === prop; 
  });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据值过滤对象数组 的相关文章

  • React Native 上无法识别的字体系列

    我在使用 React Native 时遇到了一个特殊的错误 在我的里面button js我在做 import Icon from react native vector icons MaterialIcons const icon Icon
  • javascript 中可滚动区域/div 的增量单位?

    在 javascript 中我可以确保我的大 div 垂直滚动 仅以 比方说 16 像素为单位 在 Java 中 这些被称为 增量单位 我在 javascript 中找不到类似的东西 我想确保部分滚动时的某个区域 div 始终是视图 16
  • 如何使用 JavaScript 写入不同的网页?

    我正在尝试从一个网页获取用户输入并将其写入已存在的另一个网页 如果重要的话 所有网页都在同一个域中 我调试 JavaScript 见下文 并看到它正确地迭代 for 循环并构建要写入的正确信息 但它不会将其写入其他网页 不确定我做错了什么
  • Java:检查数组的相等性(顺序无关紧要)

    我有两个String数组 比方说 String s1 a b c String s2 c a b 这些数组应该相等 我想以 最干净 的方式检查它们的相等性 我尝试使用Arrays equals s1 s2 但我得到了一个错误的答案 我想这个
  • jQuery 在变量中搜索文本?

    我有一个变量 其中包含一些文本 一些html 基本上可以是一个字符串 我需要在变量中搜索特定字符串 以便在包含该变量时以不同方式处理该变量 这是我正在尝试做的事情的一个片段 显然不起作用 each data results function
  • 以另一种风格制作一个带有形状和偏移参数的 numpy 数组

    我想以 3 元素实体 3d 位置 和单个元素 每个 x y z 坐标 的形式访问我的数组 经过一番研究后 我最终做了以下事情 gt gt gt import numpy as np gt gt gt arr np zeros 5 dtype
  • 限制 JavaScript 函数调用,但进行排队(不丢弃调用)

    函数如何限制其调用速率 如果调用过于频繁 则不应丢弃 而应排队并及时间隔开 相隔 X 毫秒 我看过throttle http drupalmotion com article debounce and throttle visual exp
  • Aurelia.io:如何导航到路线

    我有一个包含配置路由的 router js 文件 路线 js export class App configureRouter config router config title Aurelia config map route welc
  • Javascript 日期时间字符串转 UTC 日期时间和 UTC 转本地日期时间

    我需要将字符串转换为 UTC 日期 然后将 UTC 日期转换为本地日期 这是我的代码 var dateStr 9 8 2015 12 44 00 PM console log strtoUTCtoLocal dateStr function
  • PHP Post 数组的数组

    我想从 HTML post 请求更改两个不同的表到运行 PHP 的服务器 以前 当我只想更改一张表时 所有列和值都放入 POST 数组中 所以我会 colname1 gt val1 colname2 val2等等 然后我将循环 POST 来
  • 将框架外页面重定向到index.htm中的特定框架

    我在 index html 文件上使用框架 在框架的每个页面上 我都有一个代码来检查页面是否在框架中 如果没有 则重定向到index html 现在 我不仅想检查页面是否在框架中并重定向到index html 而且还想在index html
  • 多个选择器:确定触发选择器?

    这是一个我无法弄清楚的小问题 我相信很快就会有人回答 有多个选择器 例如 a button span xyz a another click function e var clicked element 我如何找出实际单击了哪个选择器 我需
  • React JS:可折叠侧边栏

    我正在使用 React JS 创建响应式 UI 我想创建一个可折叠的侧边栏 如下所示 因此 当我单击垂直条 图形信息 时 它应该像第二张图片一样展开 我见过一些例子 比如Jsfiddle示例代码 https jsfiddle net 4q8
  • socket.io 在连接时发出

    刚接触 socket io 并进行试验 这个应用程序非常简单 当我单击显示按钮时 屏幕上会实时出现图像 我有 2 个问题 我的主要问题 添加后 图像在所有客户端上都显示良好 我现在的目标是让所有连接的新客户端都能看到相同的数据 例如 如果我
  • 从 JavaScript 中的内部函数返回?

    我有一个 jQuery 支持的 JavaScript 函数 它迭代字段列表并检查它们是否为空 如果是 则阻止表单的提交 required fields forEach function field if field val field ad
  • AFNetworking 在 post 请求的 JSON 参数中发送数组

    我正在尝试通过 POST 将参数发送到我的服务器 并且它通常可以工作 但我不知道如何发送包含数组作为参数之一的 JSON 这是我尝试过的 AFHTTPClient httpClient AFHTTPClient alloc initWith
  • 从 Verdaccio 软件包版本历史记录中删除版本

    我使用取消发布版本npm unpublish
  • 画布中圆弧的不同 fillStyle 颜色

    我想这个问题的解决方案非常简单 如果这是非常明显的 请提前道歉 但我似乎无法弄清楚如何为两个不同的弧设置两个不同的 fillStyles 我只是想能够绘制不同的彩色圆圈 下面我介绍了我通常如何在画布中使用其他形状 绘图方法来完成此操作 但由
  • HTML / Javascript - 通过单击父行来展开和折叠表行(子行)

    我几天来一直在尝试解决一个问题 终于明白 如 果没有帮助 我将不会成功 我想做一件我们每天在互联网上看到的常见事情 能够单击表格行以显示更多详细信息 但这里的更多细节并不意味着文本块 而是指与父行具有相同形状的子行 以下是 HTML 表格的
  • 'data' 为 null 或不是对象 IE8

    我正在使用 iframe 将消息传输到其父页面postMessage 这是我的代码 在 iframe 中 history date click function event window top postMessage this text

随机推荐