Javascript 过滤对象
Javascript -filtering object
我正在尝试在纯 JS 中做一些事情。 我有一个这样的对象
var data = {
"Something": true,
"Something else": false,
"Blah": false,
"a fish ISA": true
};
我想做的是过滤任何忠实于其自己的对象的东西。 目前我正在尝试
var thingFunctions = Object.keys(data).filter(function(e) {
return typeof data[e] == 'function'
});
但我认为这是不正确的。 如何获取值为 true 的数据到其自己的对象?
谢谢
所以首先你在data
里面没有函数,所以对函数进行检查不会返回任何内容。
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' ]
你在请求一个对象。
我使用 Array.prototype.forEach()
对键进行迭代,使用空对象进行结果filtered
,因为我无法过滤对象:
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>');
由于您只想拥有所有真值,因此我们可以通过执行以下操作将它们转换为真假值。
!!({}) // true
!!([]) // true
!!('') // false
!!(true) // true
!!(false) // false
...
这样,我们可以通过执行以下操作来查看任何数据类型是真还是假。
var thingFunctions = Object.keys(data).filter(function(e) {
return !!(data[e]);
});
要获取一个新对象,而不仅仅是指向 true
值的键数组(不是真实的,例如 1
或 "hello"
):
var onlyTrues = {};
for (var prop in data) {
if (data[prop] === true) {
onlyTrues[prop] = data[prop];
}
}
相关文章:
- Angular:使用选择列表选择过滤代码中的对象
- 如何使用javascript过滤复杂的json对象
- 使用jquery grep过滤具有值数组的json对象
- 执行过滤对象数组的方法
- 按值名称过滤掉重复的对象,并将其放入新数组中
- 如何按数组/对象值的倍数过滤对象数组
- 访问KendoUI中Datasource过滤对象的字段
- 通过 nodejs 过滤对象数组
- 根据复选框输入过滤深层对象
- 如何过滤对象内部深度堆叠的数据(并在之后编辑删除它)
- 使用Angular js ng repeat指令过滤json对象
- 过滤父对象时,输入将丢失其值
- AngularJS ng-repeat对象,按对象过滤
- 嵌套对象过滤 - 角度
- AngularJS 过滤器:将具有唯一 ID 的对象过滤到单独的对象中
- 使用 angularjs 中的特殊 $ 字符按对象过滤不起作用
- 列表理解,如JavaScript中的对象过滤
- 用javascript对象过滤json
- 谷歌地图-基于JavaScript对象过滤结果
- 用javascript中的另一个对象过滤对象