社区首页 >问答首页 >使用reduce过滤数组

使用reduce过滤数组
EN

Stack Overflow用户
提问于 2021-04-23 06:52:29
回答 3查看 126关注 0票数 3

所以我想使用Array.prototype.reduce函数来减少一些数组(从object转换而来)。

这就是我稍后将使用Object.entries来获取数组的对象。

代码语言:javascript
代码运行次数:0
复制
const activityLoading = {
  topicsForClassCourse: true,
  b: false,
  c: false,
  d: true,
  e: false
}

我还有一个键数组,我想在减少这个对象的同时忽略它们。因此,activityLoading中的任何键以及它的本地键都将被忽略。

代码语言:javascript
代码运行次数:0
复制
const local = [ "topicsForClassCourse", "e" ]

现在,我想将对象简化为单个值。如果除本地数组中的键之外,任何键都为true,则应返回true,否则返回false。

这就是我能想到的。但它返回的是false。

代码语言:javascript
代码运行次数:0
复制
const loadingSome = () => {
      const local = [ "topicsForClassCourse", "timetableForClass" ];
      const entries = Object.entries(activityLoading)
      
      const reducer = (acc, current) => {
        if(local.includes(current[0])) {
          return false
        }
        if(current[1]) {
          return true;
        }
        return false
      }
      
      const result = entries.reduce(reducer, false)
      console.log(result)
    }

https://jsbin.com/nolobupeva/edit?js,console

EN

回答 3

Stack Overflow用户

发布于 2021-04-23 06:59:56

你应该尝试一些更简单的工作,使用reduce函数来掌握它。现在对于你的问题,你可以试试这个:

代码语言:javascript
代码运行次数:0
复制
    const loadingSome = () => {
      const local = [ "topicsForClassCourse", "timetableForClass" ];
      const entries = Object.entries(activityLoading)
      
      const reducer = (acc, current) => {
        if(local.includes(current[0])) {
          return acc
        }
        return current[1] || acc;
      }
      
      const result = entries.reduce(reducer, false)
      console.log(result)
    }

如您所见,您忘记了将acc考虑在内。我没有尝试过上面的代码,但它应该可以工作。如果没有让我知道。

票数 1
EN

Stack Overflow用户

发布于 2021-04-23 06:59:58

基本上,我会从编写单个值本身的测试开始

代码语言:javascript
代码运行次数:0
复制
function test(key, value) {
  const ignore = local.includes(key)
  return !ignore && value
}

一旦你有了它,有很多方法可以在你的整个对象上运行它。我不确定.reduce是不是最好的解决方案。我建议使用.find

代码语言:javascript
代码运行次数:0
复制
const activityLoading = {
  topicsForClassCourse: true,
  b: false,
  c: false,
  d: true,
  e: false
}
const local = [ "topicsForClassCourse", "e" ]

const result = Object.entries(activityLoading).find(([key, value]) => {
  const ignore = local.includes(key)
  return !ignore && value
})
console.log(result) // ['d', true]

const foundSomething = !!result
console.log(foundSomething) // true

如果您发现处理返回的['d', true]很麻烦,那么使用.some而不是.find将返回一个布尔值,而不是匹配测试的值。

但是如果你真的想这样做,.reduce也可以完成这项工作,只是要注意两件事:

  • 如何初始化它(第二个参数)。它应该从false开始,因为最初您假设没有匹配的值。

  • ,以及您如何累积(返回)。它应该为true.

,以便任何当前的true都会使整个结果为空。

代码语言:javascript
代码运行次数:0
复制
const activityLoading = {
  topicsForClassCourse: true,
  b: false,
  c: false,
  d: true,
  e: false
}
const local = [ "topicsForClassCourse", "e" ]

const result = Object.entries(activityLoading).reduce((accu, [key, value]) => {
  const ignore = local.includes(key)
  const test = !ignore && value
  return accu || test
}, false)

console.log(result) // true

票数 1
EN

Stack Overflow用户

发布于 2021-04-23 07:03:15

首先使用filter过滤对象以过滤出local数组键,然后使用some检查任何键是否为真/假,如何?

代码语言:javascript
代码运行次数:0
复制
const activityLoading = {
  topicsForClassCourse: true,
  b: false,
  c: false,
  d: true,
  e: false
};
const local = ["topicsForClassCourse", "e"];
let result = Object.entries(activityLoading)
  .filter(([key, value]) => !local.includes(key))
  .some(([key, value]) => value);
console.log(result);

或者您可以只使用some数组帮助器

代码语言:javascript
代码运行次数:0
复制
const activityLoading = {
  topicsForClassCourse: true,
  b: false,
  c: false,
  d: true,
  e: false
};
const local = ["topicsForClassCourse", "e"];
let result = Object.entries(activityLoading)
  .some(([key, value]) => !local.includes(key) && value)
console.log(result);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67225264

复制
相关文章
聊天机器人中的深度学习技术(引言)
原文链接:DEEP LEARNING FOR CHATBOTS, PART 1 – INTRODUCTION 译者:刘翔宇 审核:赵屹华 责编:周建丁(zhoujd@csdn.net) 聊天机器人,又被称为会话代理或者对话系统,它是一个热门的话题。微软在聊天机器人上下了 很大的成本 ,Facebook(M),苹果公司(Siri),谷歌,微信,和Slack也是如此。聊天机器人在初创公司中掀起了一种新浪潮,他们试图通过建立类似于 Operator 或x.ai 这样的应用程序,类似于 Chatfuel 这样的
用户1737318
2018/06/06
8120
谷歌聊天机器人bard和chatgpt比较
总的来说,Bard和ChatGPT都是强大的语言模型,都有自己的优点和缺点。Bard更擅长回答问题,而ChatGPT更擅长生成创意文本格式。Bard目前处于目前处于部分地区测试阶段,而ChatGPT则向公众开放。
程序那些事儿
2023/06/05
5560
谷歌聊天机器人bard和chatgpt比较
【每周NLP论文推荐】 聊天机器人中FAQ相关的论文推荐
今天推荐FAQ相关的论文,FAQ是聊天机器人的一种,它主要是基于用户的question,匹配相应的答案,返回给用户answer,没有太多的多轮交互。FAQ有较多的应用,如天猫精灵,小度等。
用户1508658
2019/09/03
1.3K0
【每周NLP论文推荐】 聊天机器人中FAQ相关的论文推荐
图灵聊天机器人
01 目录 确定目标 分析目标 代码实操 02 确定目标 本次通过图灵机器人平台的API接口制作一个人工智障聊天机器人 图灵机器人的网址为:'http://www.turingapi.com/ '
佛系编程人
2019/08/14
1.7K0
图灵聊天机器人
聊天机器人总结
里面提到一个名词叫槽位。其实可以简单的理解为填表格。DPO发起询问,NLG生成回复,为了使得回复自然,这里采用推荐时的回复。
故事尾音
2019/12/18
1.1K0
聊天机器人总结
Facebook 号称击败谷歌,推出最强聊天机器人
场景描述:Facebook 近日开源了新的聊天机器人 Blender,表现优于现有对话机器人,更具个性化。
黄博的机器学习圈子
2020/05/26
6760
Facebook 号称击败谷歌,推出最强聊天机器人
TensorFlow 聊天机器人
该文章介绍了如何利用基于Seq2Seq模型进行机器翻译,包括编码器、解码器和注意力机制等方面的实现。同时,文章还提供了训练、预测和评估的代码示例。
MachineLP
2018/01/09
1.1K0
TensorFlow 聊天机器人
聊天机器人一
? ? ? ? ? ? ---- ?
拾点阳光
2019/03/13
1.1K0
聊天机器人一
谷歌聊天机器人LaMDA被爆突然现身!只会聊狗子,被ChatGPT秒成渣
---- 新智元报道   编辑:编辑部 【新智元导读】这几日,被ChatGPT搞破防人的有点多。谷歌之前传说中「意识觉醒」的LaMDA又搬出来测试了。网友实测:只会聊「狗子」,被ChatGPT秒成渣。 谷歌急了! 眼看ChatGPT如日中天,谷歌也学起微软,狂掷4亿美元给「叛徒」公司Anthropic,想扶起一个自己的OpenAI。 最近,劈柴又放话说,谷歌的AI语言模型可能几周内就能用了。 哎,巧了不是,就在同一时间,有网友爆料:「LaMDA能用了!我刚和它对话了几句。」 这里的每个演示都是用La
新智元
2023/02/24
4740
谷歌聊天机器人LaMDA被爆突然现身!只会聊狗子,被ChatGPT秒成渣
开启聊天机器人模式
聊天机器人系统框架图 今天看到了一篇关于聊天机器人的一个不错的资源汇总: https://www.52ml.net/20510.html 进去看看先大概了解了一下都有哪些主要的概念: 原文:巨头们都很重视的聊天机器人,你不进来看看吗? 理想的 chatbot 什么样 现在的 bot 什么样 |处理任务 |聊天-搞笑
杨熹
2018/04/03
9230
开启聊天机器人模式
聊天机器人API Demo
昨天车上无聊,又写起了代码…… 居然真写出了个聊天机器人的API Demo……(没啥用) 这个API是调用图灵机器人的官方API,只是简单的解析json,直接把文字信息输出 话不多说,上代码 <?ph
FHYC
2018/06/22
4.4K0
聊天机器人的挑战
大家好,这里是NewBeeNLP。今天来送基本书,《自己动手做聊天机器人》,感兴趣的同学文末参加噢!
NewBeeNLP
2022/11/11
7960
聊天机器人的挑战
Transformer聊天机器人教程
在这篇文章中,我们将演示如何构建Transformer聊天机器人。 本文聚焦于:使用TensorFlow Dataset并使用tf.data创建输入管道来使用Cornell Movie-Dialogs Corpus,使用Model子类化实现MultiHeadAttention,使用Functional API实现Transformer。
昱良
2019/05/29
2.4K0
Transformer聊天机器人教程
聊天机器人模型 - ChatGPT
还有一个问题,正常情况:注册成功openai会赠送18美金,可以用于api调用。但如果你用的这个手机号被其他人用过了,这18美金就没有了。我第一次就遇到这个问题,只能换个E-mail重新注册
崔哥
2023/02/26
1.1K0
开启聊天机器人模式
本文介绍了聊天机器人技术的研究进展,从系统框架、自然语言理解、对话管理、自然语言生成等方面进行了详细阐述,并对当前面临的挑战和未来的展望进行了分析。
MachineLP
2018/01/09
1K0
开启聊天机器人模式
使用Python操作机器人聊天
萌新偶然发现一个好玩的东西 使用Python和机器人聊天 效果 工具 图灵机器人API itchat(提前安装) 准备 自己需要去图灵机器人注册账号,拿到APIkey,大家也可以直接使用我这个 ca0
小歪
2018/04/04
1.5K0
使用Python操作机器人聊天
Python实现聊天机器人
AIML全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由RichardS. Wallace 博士和Alicebot开源软件组织于1995-2000年间发明创造的。AIML是一种为了匹配模式和确定响应而进行规则定义的 XML 格式。
海天一树
2018/07/25
1.2K0
Python实现聊天机器人
不再鹦鹉学舌:26亿参数量,谷歌开放领域聊天机器人近似人类水平
现在的对话智能体(即聊天机器人)都是非常专业化的,如果用户不偏离场景太远的话,这些机器人的表现还是很不错的。但是,要想让聊天机器人能够完成更广泛话题下的对话任务,发展开放领域聊天机器人就显得很重要了。
机器之心
2020/02/24
5490
不再鹦鹉学舌:26亿参数量,谷歌开放领域聊天机器人近似人类水平
谷歌加入聊天机器人大战,微软Facebook将如何应对?
GAIR 今年夏天,雷锋网将在深圳举办一场盛况空前的“全球人工智能与机器人创新大会”(简称GAIR)。大会现场,雷锋网将发布“人工智能&机器人Top25创新企业榜”榜单。目前,我们正在四处拜访人工智能、机器人领域的相关公司,从而筛选最终入选榜单的公司名单。如果你的公司也想加入我们的榜单之中,请联系:2020@leiphone.com 谷歌正计划加入聊天机器人开发业务,并可能在其明天的年度开发者大会上公布一些特点。在微软的基础上,谷歌找到了一种方式,使应用开发人员能够创建在现有的消息应用程序内部运行的程序,
AI科技评论
2018/03/07
1.1K0
谷歌加入聊天机器人大战,微软Facebook将如何应对?
用 ChatGPT 考一考谷歌 AI 聊天机器人 - Bard
面对微软在 AIGC 领域一拳又一拳的出击,谷歌也真的是坐不住了,最新发布对标 ChatGPT 的聊天机器人:Bard,中文意思是:吟游诗人(听这个产品的命名还有点浪漫主义感觉~)
掘金安东尼
2023/04/22
4100
用 ChatGPT 考一考谷歌 AI 聊天机器人 - Bard

相似问题

如何在聊天机器人中返回多个响应?

10

简单聊天机器人中的错误

11

聊天机器人中的结束会话

11

聊天机器人中的空响应和交叉会话问题

13

在lex聊天机器人中呈现html

220
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档