Javascript 高效的JS组到类别转换功能?

Javascript 高效的JS组到类别转换功能?,javascript,function,Javascript,Function,我有九个小组: newFencepost oldBoard bigTree largeRock smallPebble Toughbulder diamondRing 翡翠项链 opalBracelet 和三类 木头,石头和宝石 每个组都属于三个类别中的一个,但类别名称未附加到组对象。因此,类别知道哪些组属于它们,但这些组不知道它们属于哪些类别 我需要编写一个函数groupToCat(),该函数将group作为其第一个参数,并返回与其关联的类别 我可以做到: if (group == ne

我有九个小组:


newFencepost

oldBoard

bigTree

largeRock

smallPebble

Toughbulder

diamondRing

翡翠项链

opalBracelet

和三类

木头
石头
宝石


每个组都属于三个类别中的一个,但类别名称未附加到组对象。因此,类别知道哪些组属于它们,但这些组不知道它们属于哪些类别

我需要编写一个函数
groupToCat()
,该函数将
group
作为其第一个参数,并返回与其关联的类别


我可以做到:

if (group == newFencepost || group == oldBoard || group == bigTree ){
    var category = wood;
};
但这将是丑陋的、混乱的,并且意味着每次我添加一个新的类别或组时都会有更多的工作



作为一名新程序员,我宁愿从正确的方式做简单的事情开始。在引入新内容时,编写此函数而不必更改它的正确方法是什么?

我建议维护一个
类别列表。所以你可以做一些类似的事情:

// Assuming all groups were pushed to categories like :
// wood = wood || {groups: []};
// wood.groups.push(bigTree);
// wood.groups.push(newFencepost);
// etc

function groupToCat(group) {
    for(var i = 0; i < categories.length; i++) {
        var category = categories[i];
        // .indexOf on an array will return
        // the index of the passed in object
        // in the array. If it's -1,
        // that means it's not in the array.
        if(category.groups.indexOf(group) !== -1) {
            return category;
        }
    }
}
//假设所有组都被推到如下类别:
//wood=wood | |{组:[]};
//木。群。推(大树);
//木。群。推(新篱笆柱);
//等
功能组TOCAT(组){
对于(变量i=0;i
是否每个
类别都有
组的列表?因此,您可以执行类似于
的操作,如果(wood.groups.indexOf(group)!=-1)返回wood?是的,类别知道属于它们的组。该信息可以以解决方案所需的任何方式附加。您能否更新此信息,解释其工作原理?我对
索引(组)!=-1
part这有帮助吗?我还添加了一条关于如何构造
类别
对象的注释。我现在正在研究
push()
方法,以了解您的解释,因此您将组推到category.groups对象中,该对象的索引为0或更大。。每个循环尝试不同的类别。如果
组的索引不是-1,则它是该类别的成员。好吧说得通,这有什么用<代码>木材=木材| |{组:[]}