Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有公共属性的变量数组_Javascript_Jquery_Arrays_Properties_Case - Fatal编程技术网

Javascript 具有公共属性的变量数组

Javascript 具有公共属性的变量数组,javascript,jquery,arrays,properties,case,Javascript,Jquery,Arrays,Properties,Case,我创建了一种滑块,它基于一个名为workChart的变量,该变量包含1到15(可能更多)的值。现在这些元素(作品)也分为三类。 我还将包含每个类别作品名称的全局列表定义为: gtitlesCol = [12,7,6,3,2,1]; gtitlesRech = [13,5,4]; gtitlesCorp = [15,14]; 现在,我希望整个网站上的每一个价值(工作)都能被记录下来,成为其类别的一部分,这样我就能够避免以下情况: switch( workChart ) { case 3:

我创建了一种滑块,它基于一个名为workChart的变量,该变量包含1到15(可能更多)的值。现在这些元素(作品)也分为三类。 我还将包含每个类别作品名称的全局列表定义为:

gtitlesCol = [12,7,6,3,2,1];
gtitlesRech = [13,5,4];
gtitlesCorp = [15,14];
现在,我希望整个网站上的每一个价值(工作)都能被记录下来,成为其类别的一部分,这样我就能够避免以下情况:

switch( workChart ) {
    case 3:  switchCategory( "Recherche");   break;
    case 5:  switchCategory( "Collection" ); break;
    case 12: switchCategory( "Recherche");   break;
    case 13: switchCategory( "Corporate" );
};
是否有一种聪明的方法将类别“嵌套”到工作图值中?这样我就可以使用可变工作图,并且不再需要每次都告诉函数它属于哪个类别。我认为这与将它们创建为具有属性(类别f.e.)的对象(工作)有关但是我不知道怎么处理。有什么帮助吗?非常感谢

@托拜厄斯

对不起,托比亚斯,我想我的问题比你想象的要简单得多,我拙劣的解释让你浪费了你的时间。对不起。我成功地做到了我想要的:

var categories = { 1:"Collection", 2:"Collection", 3:"Collection", 4:"Recherche", 5:"Recherche", 6:"Collection", 7:"Collection", 8:"Collection", 9:"Collection", 10:"Collection", 11:"Collection", 12:"Collection", 13:"Recherche", 14:"Corporate", 14:"Corporate" }
然后我可以做(f.e.)


或者用它做些别的事情。我想,现在唯一缺少的是一个更适合我的数组的语法形式,以避免重复15次而不是3次。

是的,你假设正确,你可以创建WorkChart作为一个对象。下面你会发现一个示例实现,假设你想做些什么(以任何方式处理)使用此类别和值,然后准备返回:

function WorkChart(cat,objVal) {
    var category = cat,
        retValue = objVal,

        getCategory = function() {
            // any code handling category
            return category;
        },

        retValue = function() {
            // any code handling value
            return retValue;
        };

        return {
            category: getCategory,
            value: retValue
        }
};


var wrkCh1 = new WorkChart("Recherche",13);
var category = wrkCh1.category();
var value = wrkCh1.value();
这是一个仅用于返回数据的简单对象。如果您希望在创建后有机会更改对象值,可以将上面的更改为setters/getter版本,如:

function WorkChart(cat,objVal) {
    var category = cat,
        retValue = objVal,

        getCategory = function() {
            return category;
        },

        getValue = function() {
            return retValue;
        },

        changeCategory = function(newCat) {
            // any code handling category
            category = newCat;
        },

        changeValue = function(newVal) {
            // any code handling value
            retValue = newVal;
        };

        return {
            category: getCategory,
            value: getValue,
            setCategory: changeCategory,
            setValue: changeValue
        }
};

var workCh1 = new WorkChart("Recherche",13);
var category = workCh1.category();
var value = workCh1.value();

workCh1.setCategory("Corporate");
workCh1.setValue(15);

category = workCh1.category();
value = workCh1.value();
关于你的评论,有很多方法可以创建一个对象数组,然后将其中一个传递给函数,例如

var workCharts = new Array();
workCharts.push(new WorkChart("category1",1));
workCharts.push(new WorkChart("category1",3));
workCharts.push(new WorkChart("category1",5));
workCharts.push(new WorkChart("category2",2));
workCharts.push(new WorkChart("category2",4));

//... and so on until you add them all
// now let's take any element
var workChart = workCharts[1];

doSomethingWithWorkChart( workChart);
doSomethingWithWorkChartCategory (workChart);
好的,在看到您的编辑后,我可以告诉您,您可以通过一个切换功能实现这一点,并保留3个数组gtitlesCol、GTITLESCHECH、gtitlesCorp的原样

function switchCatgegoryByNumber (workChart) {
    if(gtitlesCol.indexOf(workChart != -1) {
       switchCategory( "Collection" );
    }
    else if (gtitlesRech.indexOf(workChart != -1) {
       switchCategory( "Recherche" );
    }
    else if (gtitlesCorp.indexOf(workChart != -1) {
       switchCategory( "Corporate" );
    }
}

首先,您使用的是哪种语言?将来,您应该标记该语言。1)为了获得更好的曝光率和2)让用户知道您使用的是哪种语言您考虑过使用某种映射吗?我不熟悉javascript,但我知道您可以像在Java中一样使用某种映射。我开始了解这一点。谢谢。我还可以在这里补充一点,我的代码中已经有jquery,因此可能有一个简单的解决方案ion使用它,我也比纯JS更熟悉它。好吧,你误解了一件事:这和我做的完全一样,只是没有一种类型的多个对象,而是一个对象,数字作为变量名,类别字符串作为值。你创建的不是数组,事实上你可以使用g数组表示法[]源于JavaScript就是这样工作的,您可以使用数组表示法或点表示法访问变量。在这种情况下,点表示法将不起作用,因为变量名是数字。哇。这比我所知的要早,但我认为第一部分就足够了。我正在寻找一种简单的方法将类别附加到workChart的值上。因此,当在任何函数中有一个类似于
doSomethingWithWorkChart(workChart);
的东西时,我可以简单地添加
doalsomethingWithCategory(workChart);
希望我解释自己,比如:''var workCharts=[1,3,5:category1,2,4,6,10:category2,7,8,9:category3]',只是为了解释我的概念
function switchCatgegoryByNumber (workChart) {
    if(gtitlesCol.indexOf(workChart != -1) {
       switchCategory( "Collection" );
    }
    else if (gtitlesRech.indexOf(workChart != -1) {
       switchCategory( "Recherche" );
    }
    else if (gtitlesCorp.indexOf(workChart != -1) {
       switchCategory( "Corporate" );
    }
}