javascript - 我对此功能未定义
问题描述
我正在尝试使用 filter 函数来构建一个新数组,该数组仅提供长度小于 10 的字符串值。然而,该函数正在产生未定义的值。
let move = (strings) => {
console.log('I got here');
let special = strings.length < 10;
if (special) {
console.log(strings);
return strings;
}
console.log(strings);
};
const username = [];
const validUserNames = (username) => {
username.filter(move);
};
//代码预计是这样调用的
//validUserNames(["Paul", "Barnabas", "Timothy", "Judas Iscariot"])
//预期结果:保罗、巴拿巴、提摩太
解决方案
在move
函数中,您需要返回一个布尔值。更改如下:
let move = (string) => {
console.log('I got here');
let special = string.length < 10;
if (special) {
console.log(string);
return special;
}
console.log(string);
};
我改变了一些其他的东西。
filter
该函数在通过数组时采用单个值,因此我更改strings
为string
.
从技术上讲,它可以简化为这一点。
let move = (string) => {
return string.length < 10;
};
我认为还有一些你不理解的东西。拥有此代码不会做任何事情。
const validUserNames = (usernames) => {
usernames.filter(move);
}
validUserNames(["Paul", "Barnabas", "Timothy", "Judas Iscariot"]);
首先,usernames.filter
不对usernames
数组做任何事情,它返回过滤器的结果。其次,因为您没有返回过滤器的此结果,validUserNames
所以不会返回任何内容。第三,除非您将 validUserNames 的结果存储在变量中,否则应用程序的状态不会发生任何变化。
我建议你把上面的改成这个。
const validUserNames = usernames.filter(move);
validUserNames
然后将存储长度小于 10 的字符串数组。
推荐阅读
- kubernetes - 如何在 Kubeflow 中使用大量数据?
- matlab - 从离散变量转换为连续变量
- c# - 从多个线程(并行)使用 GraphServiceClient - 发送邮件
- python - 将 DataFrame show() 的结果保存到 pyspark 中的字符串
- cuda - 在cuda中同时添加多个向量
- python - 如何将空格分隔的数据转换为 csv 格式 - Python
- php - 如何使用 PHP 实现与 MySQL 数据库的持久连接?
- jquery - 如何使地址栏不关注页面加载?
- codenameone - 放置按可用空间宽度缩放的图像
- tensorflow - tensorflowjs_converter 导入元图失败