Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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中的数组验证设备ID_Javascript_Arrays - Fatal编程技术网

使用Javascript中的数组验证设备ID

使用Javascript中的数组验证设备ID,javascript,arrays,Javascript,Arrays,在Athon Homey中,我可以创建自己的脚本来执行不同的任务。 例如,检查类指示灯中的每个设备,如果它们与数组匹配,则应打开。 我的第一次尝试只是显示两个阵列中存在的设备。 如果我跳过阵列,只使用阵列myLights中的一个ID,它将只打印该设备的名称。 我如何才能对整个阵列执行此操作 //Fetch all devices from Homey let devices = await Homey.devices.getDevices(); let myLights = [ //Firep

在Athon Homey中,我可以创建自己的脚本来执行不同的任务。 例如,检查类指示灯中的每个设备,如果它们与数组匹配,则应打开。 我的第一次尝试只是显示两个阵列中存在的设备。 如果我跳过阵列,只使用阵列myLights中的一个ID,它将只打印该设备的名称。 我如何才能对整个阵列执行此操作

//Fetch all devices from Homey
let devices = await Homey.devices.getDevices();

let myLights = [
//Fireplace_lightstrip
"fe5d4348-8842-438d-be7e-d03d772ddddd",
//Lightswitch_Hall 
"bc77b020-0388-42b5-9088-b329dbceeeee", 
//Chromecast_power
"b50c3c39-285d-4dba-8e4c-327621ffffff", //is not on the class light and should not be displayed
//Next
"four" //is not on the class light and should not be displayed
];

Object.values(devices).forEach(device => {
    if(device.class != 'light') return false;
      //if (device.id !== "bc77b020-0388-42b5-9088-b329dbcef7ba") return false;
      if (device.id !== myLights) return false;
        console.log(device.name);
          return true;
});

为了检查整个阵列,我们还需要一个循环:

    Object.values(devices).forEach(device => {
    if(device.class != 'light') return false;
      //if (device.id !== "bc77b020-0388-42b5-9088-b329dbcef7ba") return false;
      var result = myLights.filter((light) => device.id == light);
      if (result.length <= 0) return false;
        console.log(device.name);
          return true;
});
Object.values(设备).forEach(设备=>{
如果(device.class!=“light”)返回false;
//if(device.id!=“bc77b020-0388-42b5-9088-b329dbcef7ba”)返回false;
var result=myLights.filter((light)=>device.id==light);

if(result.length啊,非常感谢,今晚将尝试此操作。但是不必对类进行两次筛选吗?我不能删除此行吗?if(device.class!=“light”)return false;@Makke_uuu否,该检查必须存在。我添加的变量light是myLights数组中的每个独立条目。也许,我应该更好地命名它。现在尝试代码。它将所有灯光写入日志(console.log(device.name);)它不应该只写我的数组中的那些是灯光吗?@Makke_uuaah..我已经更正了回复中的代码。请告诉我它现在是否工作。:工作完美!谢谢!