迭代JavaScript中对象的一组过滤属性的最佳方法是什么?

Subpar Web开发

我必须写很多

for ( var prop in obj ) 
{
   if ( condition(prop) ) 
   {
      // ... 
   }
}

在我的生产代码中键入部分。以下是一些直接复制粘贴的示例。

(1)

    for ( var region in this.DealsByRegion ) // iterate through regions
    {
        if ( this.RegionsChecked[region] === true ) // if region is checked in table   
        {
            num_deal_opportunities += region.NumOpportunities;
            total_deal_percentage += region[dealName] * region.NumOpportunities;
        }    

    }

(2)

for ( var deal_name in this.DealsChecked ) 
{
    if ( this.DealsChecked[deal_name] === true ) 
    {
        offer_data.push({ value: deal_percentages[deal_name], 
                          color: this.ColorStack[(this.ColorStack.length + i) % this.ColorStack], 
                          highlight: this.HighlightColor, 
                          label: deal_name });
    }       
}

当然还有很多情况

for ( var thisguy in theseguys ) 
{
   if (theseguys.hasOwnProperty(thisguy)
   {
     // ... 
   }
}

我想知道是否有办法使它更加优雅和紧凑。我尝试编写类似LINQ的Where子句

// helper function for iterating through a filtered set of properties
Object.prototype.PropsWhere = function ( cond ) 
{
    var propsWhere = [];
    for ( var prop in this ) 
    {
        if ( cond(prop) ) 
        {
            propsWhere.push(prop);  
        }   
    }
    return propsWhere;
}

但是当我尝试使用它时,我意识到它实际上使所有内容都变得不那么紧凑和易读,因此我不得不处理一个新的thisyada-yada。

我应该如何应对这些情况?

提姆

如果发现必须编写许多遍历对象属性的条件语句,则可能需要重新检查模式。

使用您的地区示例:

for ( var region in RegionsChecked ) // iterate through checked regions
{
    num_deal_opportunities += region.NumOpportunities;
    total_deal_percentage += region[dealName] * region.NumOpportunities;
}

这样,您的容器仅包含对您关心的对象的引用-而不是创建“元容器”来告诉您您关心的对象的ID。

不确定这对于您的基础结构是否可行-但要查看是否可以创建所需对象的容器-而不是告诉其他容器中需要哪些对象的中间容器。

另一种方法是使用“已检查”属性/字段标记对象本身。但是,我的猜测是,您不希望通过瞬时性的方式污染对象,例如是否当前对其进行检查。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在JavaScript对象中迭代属性的最佳方法是什么?

来自分类Dev

在Java中构建一组动态长度的对象的最佳方法是什么?

来自分类Dev

在Java中构建一组动态长度的对象的最佳方法是什么?

来自分类Dev

在 Swift Vapor 中返回一组响应可表示对象的最佳方法是什么?

来自分类Dev

从目标C的数组中获取一组唯一对象的最佳方法是什么

来自分类Dev

从字符串中的一组单词中查找单词的最佳方法是什么?

来自分类Dev

在Rails中迭代嵌套对象的最佳方法是什么

来自分类Dev

从javascript中的对象数组中删除重复属性对象的最佳方法是什么

来自分类Dev

Javascript是根据数组中的字符串列表过滤对象的最佳方法是什么?

来自分类Dev

存储一组字符串的最佳方法是什么

来自分类Dev

从一组对象中获取多个属性并形成一个新属性:Javascript

来自分类Dev

要检查一组对象中的任何一个属性是否与一组字符串中的任何一个匹配的lambda表达式是什么?

来自分类Dev

在JavaScript中删除对象的最佳方法是什么?

来自分类Dev

Neo4j-基于一组ID检查数据库中是否有多个项目的最佳方法是什么

来自分类Dev

选择与大型集合匹配时基于位掩码排除项的一组特征的最佳方法是什么?

来自分类Dev

选择与大型集合匹配时基于位掩码排除项的一组特征的最佳方法是什么?

来自分类Dev

替换字符串中首次出现的一组可能字符的最快方法是什么?

来自分类Dev

在c ++中拥有一组结构的正确方法是什么?

来自分类Dev

检查对象是否在javascript中具有一组属性

来自分类Dev

检查对象是否在javascript中具有一组属性

来自分类Dev

如何生成一组过滤的可用字体系列名称?(例如在Pages或TextEdit中)

来自分类Dev

用方法和属性定义javascript对象的最佳方法是什么?(如果可能以本机方式)

来自分类Dev

按另一组过滤器组

来自分类Dev

在Rails中迭代此结构的最佳方法是什么?

来自分类Dev

在Java中迭代列表并退出的最佳方法是什么

来自分类Dev

在PHP中创建类中的对象数组作为属性的最佳方法是什么?

来自分类Dev

在javascript中创建简单过滤器功能的最佳方法是什么?

来自分类Dev

清除处于Vuex状态的对象属性的最佳方法是什么

来自分类Dev

找到一组n个数组中存在哪些公共元素的一种干净方法是什么?

Related 相关文章

  1. 1

    在JavaScript对象中迭代属性的最佳方法是什么?

  2. 2

    在Java中构建一组动态长度的对象的最佳方法是什么?

  3. 3

    在Java中构建一组动态长度的对象的最佳方法是什么?

  4. 4

    在 Swift Vapor 中返回一组响应可表示对象的最佳方法是什么?

  5. 5

    从目标C的数组中获取一组唯一对象的最佳方法是什么

  6. 6

    从字符串中的一组单词中查找单词的最佳方法是什么?

  7. 7

    在Rails中迭代嵌套对象的最佳方法是什么

  8. 8

    从javascript中的对象数组中删除重复属性对象的最佳方法是什么

  9. 9

    Javascript是根据数组中的字符串列表过滤对象的最佳方法是什么?

  10. 10

    存储一组字符串的最佳方法是什么

  11. 11

    从一组对象中获取多个属性并形成一个新属性:Javascript

  12. 12

    要检查一组对象中的任何一个属性是否与一组字符串中的任何一个匹配的lambda表达式是什么?

  13. 13

    在JavaScript中删除对象的最佳方法是什么?

  14. 14

    Neo4j-基于一组ID检查数据库中是否有多个项目的最佳方法是什么

  15. 15

    选择与大型集合匹配时基于位掩码排除项的一组特征的最佳方法是什么?

  16. 16

    选择与大型集合匹配时基于位掩码排除项的一组特征的最佳方法是什么?

  17. 17

    替换字符串中首次出现的一组可能字符的最快方法是什么?

  18. 18

    在c ++中拥有一组结构的正确方法是什么?

  19. 19

    检查对象是否在javascript中具有一组属性

  20. 20

    检查对象是否在javascript中具有一组属性

  21. 21

    如何生成一组过滤的可用字体系列名称?(例如在Pages或TextEdit中)

  22. 22

    用方法和属性定义javascript对象的最佳方法是什么?(如果可能以本机方式)

  23. 23

    按另一组过滤器组

  24. 24

    在Rails中迭代此结构的最佳方法是什么?

  25. 25

    在Java中迭代列表并退出的最佳方法是什么

  26. 26

    在PHP中创建类中的对象数组作为属性的最佳方法是什么?

  27. 27

    在javascript中创建简单过滤器功能的最佳方法是什么?

  28. 28

    清除处于Vuex状态的对象属性的最佳方法是什么

  29. 29

    找到一组n个数组中存在哪些公共元素的一种干净方法是什么?

热门标签

归档