javascript - 从 JavaScript 对象中过滤结果

标签 javascript jquery

我确信 javascript 或 jquery 中内置了某种过滤器功能,但我似乎不知道如何使用 jquery filter() 来做到这一点

是否有一种方法可以过滤 JavaScript 对象中具有特定值的所有元素并返回该对象?

我想要的功能是这样的,虽然不是很长,但我只是想知道是否有更简单的东西。

谢谢!

(function(){
  var obj = {
    a: true,
    b: true,
    c: false,
    d: true,
    e: true

  },
  f = [],
  true_obj = {};

  for (var i in obj){
    if (obj[i] === true){
      f.push(i);
    }
  }
  for (var c = 0; c < f.length; c++){
    true_obj[c] = f[c];
  }
  console.log(true_obj);

}());

JSBIN

最佳答案

使用 jQuery 的内置怎么样 map方法? http://api.jquery.com/jQuery.map/

(function(){
  var obj = {
    a: true,
    b: true,
    c: false,
    d: true,
    e: true
  },
  f,
  true_obj = {};

  f = $.map(obj, function (val, key) {
      return (val === true) ? key : null;
  });
  for (var c = 0; c < f.length; c++){
    true_obj[c] = f[c];
  }
  console.log(true_obj);
}());

http://jsfiddle.net/gVZVL/

map中评估的值如果值不是null,回调将被添加到结果数组中/undefined .

此外,如果您想复制 f数组到true_obj ,只需使用 slice (而不是你的 for 循环)- https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/slice :

true_obj = f.slice(0);

http://jsfiddle.net/gVZVL/1/

更新:

如果您只是想过滤 Object 中的项目,试试这个:

for (var key in obj) {
    if (obj[key] !== true) {
        delete obj[key];
    }
}

如果您尝试复制它(也保留原始 Object ),您可以使用:

var final_obj = {};
for (var key in obj) {
    if (obj[key] === true) {
        final_obj[key] = obj[key];
    }
}

在其中任何一个中,如果您从以下内容开始:

var obj = {
    a: true,
    b: true,
    c: false,
    d: true,
    e: true
};

你最终会得到

{
    a: true,
    b: true,
    d: true,
    e: true
}

(覆盖或复制)

关于javascript - 从 JavaScript 对象中过滤结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15774031/

相关文章:

javascript - topfunction 未定义

javascript - 组织结构图未显示所有标签

javascript - 如何动态决定并告诉 d3.json() 函数何时采用哪个 json

javascript - 如何在滚动条上从左向右移动一个div?

javascript - 粘贴标题并将选项卡设置为事件状态时出现滚动问题 | jQuery

javascript - 如何防止从控制台对 SignalR 聊天进行 jQuery 调用?

jquery - 使用 JQuery 选择器和 Selenium IDE 2.0.0 获取元素属性

jquery - ng-style 失败,而 jQuery.css 工作正常

javascript - 我怎样才能实现这个twbs分页

javascript - 在数组中找到最大值(在整数集中)