我有一个对象数组:
{Option1: true, Option2: true, Option3: true}
我想过滤这个数组,以便只保留真正的元素。但我需要关键,而不是价值。我怎么能这样做?
我搜索了 underscore.js 函数,但是它们仅针对值而不是键执行此操作。
答案 0 :(得分:1)
首先,这不是一个对象数组。
这是一个对象数组:
ax =
[ {Option1: true, Option2: true, Option3: true},
{Option1: true, Option2: true, Option3: true},
{Option1: true, Option2: true, Option3: true} ]
过滤它迭代并测试。如果它通过了您的标准,请将其复制到结果集中:
result = [];
for (i = 0; i < ax.length; i++)
{
if (ax[i].Option2) // may be as complex as you need it to be
{
// passed test
result.push(ax[i]);
}
}
现在result
包含您想要的项目。
答案 1 :(得分:1)
var keys = [{"key1":"false"}, {"key2":"true"}]
.filter(function (o, i) { return o['key' + (i + 1)] === 'true'; })
.map(function (o) { for (var k in o) return k; });
console.log(keys); //["key2"]
编辑:
你改变了问题...... {Option1: true, Option2: true, Option3: true}
不是一个对象数组,它只是一个对象。这是你能做的:
var o = {Option1: true, Option2: true, Option3: true};
var keys = Object.keys(o).filter(function (k) {
return o[k];
});