if数组中指定的语句条件

Mor*_*eus 4 javascript arrays

我有以下数组:

array = ["ProgA", "ProgC", "ProgG"]
Run Code Online (Sandbox Code Playgroud)

此数组可以根据用户输入而更改.

我有以下Json文件:

    {"ABC":{

        "ProgA": 1, 
        "ProgB": 0, 
        "ProgC": 1,  
        "ProgD": 0, 
        "ProgE": 0, 
        "ProgF": 1, 
        "ProgG": 1, 
        "ProgH": 0 


    },
    "DEF":{

        "ProgA": 1, 
        "ProgB": 0, 
        "ProgC": 0,  
        "ProgD": 0, 
        "ProgE": 1, 
        "ProgF": 0, 
        "ProgG": 1, 
        "ProgH": 0 


    },
    "GHI":{

        "ProgA": 1, 
        "ProgB": 1, 
        "ProgC": 1,  
        "ProgD": 1, 
        "ProgE": 1, 
        "ProgF": 1, 
        "ProgG": 1, 
        "ProgH": 1


    },
    "JKL":{

        "ProgA": 1, 
        "ProgB": 0, 
        "ProgC": 1,  
        "ProgD": 1, 
        "ProgE": 0, 
        "ProgF": 1, 
        "ProgG": 0, 
        "ProgH": 1 


    },
    "MNO":{

        "ProgA": 1, 
        "ProgB": 1, 
        "ProgC": 1,  
        "ProgD": 0, 
        "ProgE": 1, 
        "ProgF": 1, 
        "ProgG": 1, 
        "ProgH": 1

    }}
Run Code Online (Sandbox Code Playgroud)

我的目标是基本上返回所有具有ProgA,ProgC和ProgG == 1的名称("ABC","DEF"等)

我不确定if当条件在一个可以改变的数组中时如何评估语句.

Nen*_*car 10

你可以用filter()和做every()

var array = ["ProgA", "ProgC", "ProgG"];
var obj = {"ABC":{"ProgA":1,"ProgB":0,"ProgC":1,"ProgD":0,"ProgE":0,"ProgF":1,"ProgG":1,"ProgH":0},"DEF":{"ProgA":1,"ProgB":0,"ProgC":0,"ProgD":0,"ProgE":1,"ProgF":0,"ProgG":1,"ProgH":0},"GHI":{"ProgA":1,"ProgB":1,"ProgC":1,"ProgD":1,"ProgE":1,"ProgF":1,"ProgG":1,"ProgH":1},"JKL":{"ProgA":1,"ProgB":0,"ProgC":1,"ProgD":1,"ProgE":0,"ProgF":1,"ProgG":0,"ProgH":1},"MNO":{"ProgA":1,"ProgB":1,"ProgC":1,"ProgD":0,"ProgE":1,"ProgF":1,"ProgG":1,"ProgH":1}}

var result = Object.keys(obj).filter(function(e) {
  return array.every(function(a) {
    return obj[e][a] == 1;
  });
});

console.log(result)
Run Code Online (Sandbox Code Playgroud)

  • 使用`.keys`,`.filter`和`.every`这个答案的+1,这是我认为最干净的方法. (4认同)