使用Javascript中的数组验证设备ID
在Athon Homey中,我可以创建自己的脚本来执行不同的任务。 例如,检查类指示灯中的每个设备,如果它们与数组匹配,则应打开。 我的第一次尝试只是显示两个阵列中存在的设备。 如果我跳过阵列,只使用阵列myLights中的一个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
//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..我已经更正了回复中的代码。请告诉我它现在是否工作。:工作完美!谢谢!