首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript -filtering对象

Javascript -filtering对象
EN

Stack Overflow用户
提问于 2016-02-09 15:46:00
回答 4查看 100关注 0票数 2

我想用纯JS做点什么。我有一个像这样的物体

代码语言:javascript
复制
var data = {
    "Something": true,
    "Something else": false,
    "Blah": false,
    "a fish ISA": true
};

我想要做的是过滤任何对自己的对象都是真实的。此刻我正在努力

代码语言:javascript
复制
var thingFunctions = Object.keys(data).filter(function(e) {
    return typeof data[e] == 'function'
});

但我认为这是不正确的。如何获得值为true的数据?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-02-09 16:05:27

要获得一个新对象,而不是指向true值的键数组(不真实,例如1"hello"):

代码语言:javascript
复制
var onlyTrues = {};

for (var prop in data) {
  if (data[prop] === true) {
    onlyTrues[prop] = data[prop];
  }
}
票数 0
EN

Stack Overflow用户

发布于 2016-02-09 15:51:36

因此,首先您在data中没有函数,所以对函数进行检查将不会返回任何内容。

代码语言:javascript
复制
var data = {
    "Something": true,
    "Something else": false,
    "Blah": false,
    "a fish ISA": true
};

var thingFunctions = Object.keys( data ).filter(function( e ) {
    return data[ e ] === true;
});

console.log( thingFunctions );

// Will result in [ 'Something', 'a fish ISA' ]
票数 3
EN

Stack Overflow用户

发布于 2016-02-09 15:54:07

你想要的是什么东西。

我使用Array.prototype.forEach()对键进行迭代,对结果filtered使用空对象,因为我不能过滤对象:

代码语言:javascript
复制
var data = {
        "Something": true,
        "Something else": false,
        "Blah": false,
        "a fish ISA": true
    },
    filtered = {};

Object.keys(data).forEach(function(e) {
    if (data[e] === true) {                      // explicit testing for boolean and true!
        filtered[e] = data[e];
    }
});

document.write('<pre>' + JSON.stringify(filtered, 0, 4) + '</pre>');

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35296200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档