javascript - 我怎样才能找到像“!”这样的特殊字符 或者 '?' 在 JavaScript 的对象数组中?
问题描述
我想用“!”找到用户名 和 '?' 在对象数组中并将它们存储在新数组中。
对象数组如下。
const array = [
{
username: "john!",
team: "red",
score: 5,
items: ["ball", "book", "pen"]
},
{
username: "becky",
team: "blue",
score: 10,
items: ["tape", "backpack", "pen"]
},
{
username: "susy?",
team: "red",
score: 55,
items: ["ball", "eraser", "pen"]
},
{
username: "tyson",
team: "green",
score: 1,
items: ["book", "pen"]
},
];
我尝试了循环的test()
方法forEach
,但我无法获得首选输出。我该怎么做?我可以使用map()
而不是forEach
遍历对象吗?
解决方案
解决方案
这是您的问题的简单单行解决方案:
const arr = [
{
username: "john!",
team: "red",
score: 5,
items: ["ball", "book", "pen"]
},
{
username: "becky",
team: "blue",
score: 10,
items: ["tape", "backpack", "pen"]
},
{
username: "susy?",
team: "red",
score: 55,
items: ["ball", "eraser", "pen"]
},
{
username: "tyson",
team: "green",
score: 1,
items: ["book", "pen"]
},
]
let newArr = []
arr.forEach(({username}) => username.match(/[?|!]/g) ? newArr.push(username) : null)
console.log(newArr)
这个怎么运作
首先,我们使用以下方法遍历数组中的所有元素:
arr.forEach(({username}) => ...)
然后我们检查是否username
包含'!' 或者 '?' 使用正则表达式(正则表达式):
username.match(/[?|!]/g)
如果它确实包含一个“?” 或者 '!' 然后将用户名推送到新数组:
newArr.push(username)
如果用户名不匹配,则返回null
。
推荐阅读
- javascript - 如何让我的不和谐机器人响应嵌入另一条消息的字段中的关键字
- r - 有没有办法在从 R 中读取的文本文件之后命名列?
- tfx - 如何在 Evaluator 中计算附加统计信息?
- c++ - 仅在(互斥的)需求子句中的差异导致隐藏的朋友超载:合法还是违反 ODR?
- python - 我的前缀命令不起作用(不和谐机器人) discord.py
- c++ - 使用 INTEL 显卡在单通道整数纹理上的离屏渲染问题
- ios - `UIViewControllerRepresentable` 表格视图在长按后消失
- python - 如何将正常运行时间转换为日期时间?
- python-3.x - 如何在 Kivy RecycleView 中预选项目?
- java - 如何使类的子类返回正确的 Java 类型