首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于过滤对象数组的Slick函数

问用于过滤对象数组的Slick函数
EN

Stack Overflow用户
提问于 2014-02-07 15:59:48
回答 2查看 336关注 0票数 0

我有一个对象数组:

代码语言:javascript
复制
{Option1: true, Option2: true, Option3: true}

我希望筛选这个数组,以便只保留真正的元素。但我需要钥匙而不是价值。我该怎么做?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-07 16:07:37

代码语言:javascript
复制
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}不是一个对象数组,它只是一个对象。以下是你可以做的:

代码语言:javascript
复制
var o = {Option1: true, Option2: true, Option3: true};

var keys = Object.keys(o).filter(function (k) {
    return o[k];
});
票数 1
EN

Stack Overflow用户

发布于 2014-02-07 16:07:04

首先,这不是一个对象数组。

这是一个对象数组:

代码语言:javascript
复制
ax =
[ {Option1: true, Option2: true, Option3: true},
  {Option1: true, Option2: true, Option3: true},
  {Option1: true, Option2: true, Option3: true} ]

来过滤它并进行迭代和测试。如果它通过了您的标准,则将其复制到结果集中:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21632301

复制
相关文章

相似问题

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