使用过滤器返回对象中的属性值

2024-01-08

尝试创建一个使用 filter 但不使用 for 或 while 循环或 foreach 函数的函数,该函数将循环遍历对象数组,仅返回其属性值。例如,

function getShortMessages(messages) {
    return messages.filter(function(obj){
        return obj.message
    });
}

所以如果我打电话

getShortMessages([{message:"bleh"},{message:"blah"}]); 

我应该得到一个数组的返回 = ["bleh","blah"] 我只是不确定如何根据这些准则实施过滤器。我也在考虑使用链函数,也许是.map。

//// 这是完整的代码挑战规范/////

基本:过滤器 练习 4(共 18 个)

Task

使用 Array#filter 编写一个名为 getShortMessages 的函数。

getShortMessages 接受具有“.message”属性的对象数组,并返回长度小于 50 个字符的消息数组。

该函数应该返回一个包含消息本身的数组,而不包含它们的包含对象。

论据

  • messages:由 10 到 100 个随机对象组成的数组,如下所示:
{
    message: 'Esse id amet quis eu esse aute officia ipsum.' // random
}

状况

  • 不要使用任何 for/while 循环或 Array#forEach。
  • 不要创建任何不必要的功能,例如帮手。

Hint

  • 尝试链接一些数组方法!

Example

[ 'Tempor quis esse consequat sunt ea eiusmod.',
  'Id culpa ad proident ad nulla laborum incididunt.',
  'Ullamco in ea et ad anim anim ullamco est.',
  'Est ut irure irure nisi.' ]

资源

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

样板文件

function getShortMessages(messages) {
  // SOLUTION GOES HERE
}

module.exports = getShortMessages

» 要再次打印这些说明,请运行:function-javascript print » 要在测试环境中执行您的程序,请运行:function-javascript run program.js » 要验证您的程序,请运行:function-javascript verify program.js » 如需帮助,请运行:function-javascript help


Use .filter当您想要获取与预期属性匹配的整个对象时。使用.map当您有一系列事物并想要对这些事物进行一些操作并获得结果时。

挑战在于获取 50 个字符或更少的所有消息。所以你可以使用filter只获取通过该测试的消息,然后map仅获取消息文本。

function getShortMessages(messages) {
  return messages
    .filter(function(obj) {
      return obj.message.length <= 50;
    })
    .map(function(obj) {
      return obj.message;
    });
}

JSFiddle:http://jsfiddle.net/rbbk65sq/ http://jsfiddle.net/rbbk65sq/

如果输入对象可能没有message财产,你想测试它obj.message && obj.message.length <= 50像这样:

function getShortMessages(messages) {
  return messages
    .filter(function(obj) {
      return obj.message && obj.message.length <= 50;
    })
    .map(function(obj) {
      return obj.message;
    });
}

ES6

ES6 中的相同代码示例:

const getShortMessages = (messages) => messages
  .filter(obj => obj.message.length <= 50)
  .map(obj => obj.message);

如果输入对象可能没有message财产:

const getShortMessages = (messages) => messages
  .filter(obj => obj.message && obj.message.length <= 50)
  .map(obj => obj.message);

JSFiddle:http://jsfiddle.net/npfsrwjq/ http://jsfiddle.net/npfsrwjq/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用过滤器返回对象中的属性值 的相关文章

随机推荐

  • 编写没有语法文件的自定义 Xtext/ANTLR 词法分析器

    我正在为 CoffeeScript 编写一个 Eclipse Xtext 插件 我意识到我可能需要手动为其编写一个词法分析器 CoffeeScript 解析器还使用手写词法分析器 https github com jashkenas cof
  • mod_php 和 cgi php 脚本有什么区别?

    mod php 和 cgi php 脚本有什么区别 我的意思是 为什么最好 是吗 使用 mod php 而不是简单的 php 脚本 并将它们作为 CGI 运行 Thanks 使用 CGI 时 PHP 进程由 Apache 启动 并且是该 P
  • SLComposeViewController 完成处理程序

    您好 如果使用 SLComposeViewController CompletionHandler 完成推文 我如何收到通知 这是发送推文的代码 if SLComposeViewController isAvailableForServic
  • 在没有 IIS 和 VS 2017 的情况下使用 Kestrel

    依赖于微软文档 Kestrel 可以单独使用 也可以与反向代理服务器 例如 IIS Nginx 或 Apache 一起使用 反向代理服务器接收来自 Internet 的 HTTP 请求 并在进行一些初步处理后将它们转发到 Kestrel 如
  • 使用导数和雅可比增强 odeint 类

    我打算在 MCMC 例程中使用 Boost odeint 库来估计 ODE 模型中的参数 由于这些 ODE 可能很僵硬 因此我需要能够将雅可比矩阵与导数一起传递到求解器中 我想创建一个类 其中参数和初始值作为私有成员 然后将导数 雅可比和更
  • 我应该在私有/内部方法中添加空参数吗?

    我正在编写一个库 它具有多个公共类和方法 以及库本身使用的多个私有或内部类和方法 在公共方法中 我有一个空检查和一个抛出 如下所示 public int DoSomething int number if number null throw
  • Java:使用异步编程优化应用程序

    我必须修改 dropwizard 应用程序以提高其运行时间 基本上 该应用程序每天接收大约 300 万个 URL 并下载和解析它们以检测恶意内容 问题是该应用程序只能处理 100 万个 URL 当我查看该应用程序时 我发现它正在进行大量顺序
  • 将文件下载到特定文件夹 python

    我可以从以下位置下载文件URL以下方式 import urllib2 response urllib2 urlopen http www someurl com file pdf html response read 我能想到的一种方法是以
  • 从流中读取数据的最有效方法

    我有一种使用对称加密来加密和解密数据的算法 无论如何 当我要解密时 我有 CryptoStream cs new CryptoStream ms cryptoTransform CryptoStreamMode Read 我必须从 cs C
  • 来自产品 ID 的 MSI 产品代码?

    我正在尝试将 MSI 产品代码 GUID 转换为用于标识 MSI 注册表项中已安装项目的产品代码 ID 有这方面的API吗 如果不是 这该怎么办 Warning Microsoft 强烈建议您不要弄乱他们的 MSI 注册表项 但如果您确实必
  • 如何删除 AWS ECS 任务定义?

    在 Amazon 的 EC2 容器服务中创建任务定义后 如何删除或移除它 It s a 已知问题 https forums aws amazon com thread jspa threadID 170378 一旦取消注册任务定义 它就会进
  • PHP:没有连接的字符串中的变量

    如果我在这个字符串中有一个变量 var echo Hello there are many vars Php 寻找variable vars代替 var 没有连接 如 Hello there are many var s 还有另一种方法可以
  • Jboss不部署战争,JBAS011006

    我需要你的帮助 我正在尝试将 WAR 部署到 Jboss Application Server 7 1 但无法实现 我通过 Web 控制台部署它 它在部署过程中冻结 没有任何错误 这是我的 server log http rghost ru
  • HTML5

    我想知道这是什么意思
  • 更好的说法是 x == Foo::A || x == Foo::B || x == Foo::C || ...?

    假设我有一堆众所周知的价值观 就像这样 但是const char 这只是一个例子 可能更复杂 const char A A B B C C D D E E F F G G 现在假设如果某个表达式的结果位于这些表达式的子集中 我想以特定的方式
  • 简单的 yacc 语法给出错误

    我有一个关于 yacc 编译器的问题 我不编译简单的 yacc 语法 这是代码部分 anbn 0 y token A B start anbn n printf is in anbn 0 n return 0 anbn empty A an
  • before(:each) 与之前

    我是 ruby on Rails 的新手 并进行测试 之间有区别吗 before each do some test code end and before do some test code end The before方法接受一个sco
  • write()-Python 3.x 中的编码字符串

    我有一个 unicode 字符串 我想将其写入文件中 在 Python 2 中我可以这样写 open filename w write s encode utf 8 但这对于 Python 3 来说失败了 显然 s encode 返回 by
  • 如何根据文本长度增加UITextview高度,如whatsapp

    我已经使用 websocket 在我的 iOS 应用程序中实现了聊天功能 它对我来说工作得很好 问题是我想增加 UITextView 的高度 而 UITableView 应该根据 UITextView 增加的高度向上移动 谁能帮我 以下是我
  • 使用过滤器返回对象中的属性值

    尝试创建一个使用 filter 但不使用 for 或 while 循环或 foreach 函数的函数 该函数将循环遍历对象数组 仅返回其属性值 例如 function getShortMessages messages return mes