我想用纯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的数据?
谢谢
发布于 2016-02-09 16:05:27
要获得一个新对象,而不是指向true值的键数组(不真实,例如1或"hello"):
var onlyTrues = {};
for (var prop in data) {
if (data[prop] === true) {
onlyTrues[prop] = data[prop];
}
}发布于 2016-02-09 15:51:36
因此,首先您在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' ]发布于 2016-02-09 15:54:07
你想要的是什么东西。
我使用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>');
https://stackoverflow.com/questions/35296200
复制相似问题