gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:17:54 25 4
gpt4 key购买 nike

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

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

所以如果我打电话

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

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

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

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

任务

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

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

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

参数

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

条件

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

提示

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

示例

[ '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.' ]

资源

样板

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

最佳答案

使用.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/

如果输入对象可能没有 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/

关于javascript - 使用过滤器返回对象中的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31201262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com