javascript - 如何匹配列表中的值,但在 Javascript 中返回它后面的值?
问题描述
我试图让我的函数循环遍历 var list 并匹配粘贴到 HTML 文本框中的文本。例如,现在 var 列表中仅有的两个示例,如果粘贴的文本中存在“AFCOMMMDL”,我希望该函数返回“空军表彰奖章”。我会这样做,在文本中搜索所有缩写代码,然后立即返回一个并将其推送到最终将被打印的空 finalList[]。我是 Javascript 的新手,已经搜索了一遍,找不到答案。先感谢您。
function sortAwards() {
//Assign rewards variable whatever content was pasted in text box
var rewards = document.getElementById("paste").value;
//Remove spaces from pasted text
rewards = rewards.replace(/\s/g, '');
//Empty list to contain all of the matches
var finalList = [];
var list = {
'AFCOMMMDL': 'Air Force Commendation Medal',
'AFACHIEVMDL': 'Air Force Achievement Medal',
}
for (index = 0; index < list.length; index++) {
if (rewards.includes(index)) {
rewards.push[index];
}
}
//Test to show result
document.getElementById('test').innerHTML = finalList;
};
解决方案
你可能是这个意思
过滤器和映射(您可以使用 reduce,但这更难阅读)
const list = {
'AFCOMMMDL': 'Air Force Commendation Medal',
'AFACHIEVMDL': 'Air Force Achievement Medal'
}
function expandAcronyms() {
//Assign rewards variable whatever content was pasted in text box
var rewards = this.value;
var finalList = rewards.split(/\W+/) // split on not words
.filter(word => list[word]) // return only found words
.map(word => list[word]) // lookup and return the value
.join(", "); // join with ", "
document.getElementById('test').innerHTML = finalList;
}
document.getElementById("paste").addEventListener("input",expandAcronyms)
//filter(res => res)
<textarea id="paste"></textarea>
<div id="test"></div>
推荐阅读
- java - 一种从 JVM 内存中获取所有对象实例的方法
- node.js - Discord.js - 反应收集器的问题
- c# - 从 C# 程序查询 API 时的 HTTP 状态代码 500,但 API 有效
- github - 在 Github 拉取请求页面上显示 Travis-CI 构建状态
- php - Bootstrap 导航切换器未关闭 wordpress 中的菜单
- python - 在链中的 pandas 中添加组属性(类似于 dplyr group_by - R 中的变异)
- reactjs - 为 ReactJS 和 Asp.net 核心创建 Docker 镜像
- javascript - 在javascript中定义函数时,有没有办法将数组作为参数传递?
- sql - 如果其他列等于 SQL Oracle 中的特定值,则创建新列
- python - 一维卷积神经网络权重矩阵