请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 99|回复: 4

[流程系列] 关于nodered的求助

[复制链接]

57

主题

742

帖子

2503

积分

金牌会员

Rank: 6Rank: 6

积分
2503
金钱
1756
HASS币
30
发表于 2020-6-30 00:17:39 | 显示全部楼层 |阅读模式
本帖最后由 plutosherry 于 2020-6-30 00:29 编辑

const list = [
  {
    alias: ['晚安'],
    proxy: '/endpoint/miai/ha/goodnight'
  },
  {
    alias: ['室内空气指数'],
    proxy: '/endpoint/miai/ha/airquality'
  },
  {
    alias: ['切灯'],
    proxy: '/endpoint/miai/ha/switchlight'
  },
  {
    alias: ['打开客厅灯'],
    proxy: '/endpoint/miai/ha/livingroom_light1'
  },
  {
    alias: ['关闭客厅灯'],
    proxy: '/endpoint/miai/ha/livingroom_light1'
  }
]

let queries = []
msg.payload.cmd && queries.push(msg.payload.cmd)
try {
    //queries = JSON.parse(msg.payload.res).response.answer[0].intention.query;
    queries = '切灯';
} catch (e) {
}

msg.queries = queries
msg.list = list
msg.matched = !!list.filter((item, index) => {
 matched = ~item.alias.indexOf(queries).length
 matched && (msg.matched_index = index)
 return matched
}).length

return msg;


哪位大神能解释一下 为何 当 queries = '切灯' 的时候,msg.matched_index = 5 而不是 = 2?
最终导致list中的index索引错乱

回复

使用道具 举报

3

主题

105

帖子

456

积分

中级会员

Rank: 3Rank: 3

积分
456
金钱
351
HASS币
0
发表于 2020-7-1 14:01:55 | 显示全部楼层
好像写的不对,你这个好像是把index 都输出了一遍,到最后就是 0 1 2 3 4 最后是4 ~符号又加了1 就输出5了应该,你如果是判断意图所在位置应该用加判断吧,
if(item.alias.indexOf(queries) != -1){
    console.log(index);
  }
这样应该可以,
个人见解,技术不到家,如果说错了请见谅
回复

使用道具 举报

57

主题

742

帖子

2503

积分

金牌会员

Rank: 6Rank: 6

积分
2503
金钱
1756
HASS币
30
 楼主| 发表于 2020-7-1 15:55:40 | 显示全部楼层
xugeno1 发表于 2020-7-1 14:01
好像写的不对,你这个好像是把index 都输出了一遍,到最后就是 0 1 2 3 4 最后是4 ~符号又加了1 就输出5了 ...

我也是看得一头雾水,这段代码不是我写的,是修改自之前F大的小爱拦截脚本里面的 一部分。
确实是列了一下list中的index,然后累计计数输出总数为list中的item总数量。
但我现在需要达到的效果是,当 queries = '切灯' 时,匹配list中对应的item下的proxy信息,并msg输出
回复

使用道具 举报

3

主题

105

帖子

456

积分

中级会员

Rank: 3Rank: 3

积分
456
金钱
351
HASS币
0
发表于 2020-7-1 17:15:55 | 显示全部楼层
plutosherry 发表于 2020-7-1 15:55
我也是看得一头雾水,这段代码不是我写的,是修改自之前F大的小爱拦截脚本里面的 一部分。
确实是列了一 ...

list.filter((item, index) => {
  if(item.alias.indexOf(queries) != -1){
    console.log(item.proxy);
    msg.proxy = item.proxy;   
  }
})

这样就可以了
回复

使用道具 举报

57

主题

742

帖子

2503

积分

金牌会员

Rank: 6Rank: 6

积分
2503
金钱
1756
HASS币
30
 楼主| 发表于 2020-7-2 09:47:18 | 显示全部楼层
xugeno1 发表于 2020-7-1 17:15
list.filter((item, index) => {
  if(item.alias.indexOf(queries) != -1){
    console.log(item.proxy ...

感谢回复,回头我去试试。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2020-7-15 17:06 , Processed in 0.076941 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表