如何让OR运算符在此JavaScript数组中工作

时间:2012-07-25 13:53:26

标签: javascript arrays

我一直在和这个问题摔跤几个月了。是否可以将“OR”运算符应用到下面的数组结构中?

基础知识:如果下拉列表中的值与数组中的值匹配,那么相应的ID将发送到函数并执行其他一些操作,但我无法添加/包含 OR运算符

例如,我希望能够在代码中说:

{id : '418', value: 'Brochure' || 'Broc'},
{id : '546', value: 'Classified Ad' || 'CA' || 'Class Ad'},

但是上面的内容永远不会有效,所以我不知道它是否无法完成或语法错误。

任何见解都会受到重视。


找到值后运行的功能

var projectTypes = [{
    "id": "418",
    "value": ["Brochure", "Broc"]
  }, {
    "id": "546",
    "value": ["Classified Ad", "CA", "Class Ad"]
  }, {
    "id": "254",
    "value": ["Flyer", "Flyers"]
  }, {
    "id": "855",
    "value": "Post Card"
  }];

function projectTypeChange() {
    var project_type = document.getElementById(projectType_Field_Id).value;
    SwitchBox(project_type);
}

function SwitchBox(selectedType) {
    for (var i = 0; i < projectTypes.length; i++) {
        if (projectTypes[i].value.indexOf(projectTypes) >= 0)
        //if (projectTypes[i].value == selectedType)
        {
            document.getElementById("section-" + projectTypes[i].id).style.display = '';
        } else {
            document.getElementById("section-" + projectTypes[i].id).style.display = 'none';
        }
    }
}

2 个答案:

答案 0 :(得分:4)

而不是尝试使用||运算符(在这种情况下不正确),使值成为自己的数组:

{ id: '418', value: ['Brochure','Broc'] },
{ id: '546', value: ['Classified Ad','CA','Class Ad'] }

然后检查indexOf以查看值是否在数组中,而不是检查值是否相等:

if(value.indexOf(someVal) >= 0)
{
    // someVal was found in the value array...do the work!
}

答案 1 :(得分:1)

做贾斯汀的建议。在代码索引中更改此行:

if(projectTypes[i].value.indexOf(projectTypes) >= 0)

到此:

if(projectTypes[i].value.indexOf(selectedType) >= 0)