用于过滤对象数组的滑动功能

时间:2014-02-07 15:59:48

标签: javascript underscore.js

我有一个对象数组:

{Option1: true, Option2: true, Option3: true}

我想过滤这个数组,以便只保留真正的元素。但我需要关键,而不是价值。我怎么能这样做?

我搜索了 underscore.js 函数,但是它们仅针对值而不是键执行此操作。

2 个答案:

答案 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];
});