javascript - 将字符串转换为列表并分隔每个元素
问题描述
所以我有一个用例,我输入属于一轮的索引和描述。我创建了一个 JS 函数,允许我输入这些索引和描述。当我从发布请求中删除数据时,我得到以下数据:
['0,This is a testround', '1,This is a new testround']
我想拆分这些数据,以便我可以将索引变量中的 0 和描述变量中的以下描述“这是一个测试轮”分开。请注意,描述只能包含逗号。索引并不总是与数组的索引相对应:[[0,"Description1"],[5,"Description2"]] 可能发生
一个可能的解决方案是用逗号分割字符串,并使用 str[0] 作为索引,使用其他部分作为描述,但对我来说,这看起来像一个丑陋的解决方案。
我应该怎么办?
我使用以下 JS 将回合保存到一个 playerdata div 中,我从中提取上面的列表(其中项目是带有索引和描述的列表)
function item_checkbox(items,n) {
return `
<input type="checkbox" style="display:none;" name="${itemList[n]}" value="${items}" checked>
`
}
function add_to_itemData(items, n) {
itemDataEl = document.getElementById(itemData[n])
itemDataEl.innerHTML = itemDataEl.innerHTML + item_checkbox(items, n)
}
感谢您提前提供任何帮助
解决方案
虽然您说通过拆分来解决它是一个“丑陋”的解决方案,但我认为这是一个非常简单的例程,考虑到数据返回给您的格式。
['0,This is a testround', '1,This is a new testround'].map(v => v.split(','));
...将正确转换为:
[
[ "0", "This is a testround" ],
[ "1", "This is a new testround" ]
]
但我想我明白你的意思。有一些可能的问题 - 例如,密钥唯一性问题。您可以通过将每一行保留为 Javascript 对象而不是数组来解决这个问题,并且您可以使用 很容易地转换它Object.fromEntries()
,因为它可以方便地接受每一行二维数组作为键/值对:
Object.fromEntries([
[ "0", "This is a testround" ],
[ "1", "This is a new testround" ],
[ "1", "This is a dupe testround" ] // this will overwrite the previous entry
]);
// {0: "This is a testround", 1: "This is a dupe testround"}
您可能需要采取一些额外的步骤来进行额外的控制,例如使用.trim()
删除前导或尾随空格或使用自定义正则表达式测试/过滤/拆分它们。
推荐阅读
- javascript - jsPDF,保存方法导致“未捕获(承诺)RangeError:无效的字符串长度”
- php - 如何通过 API 启动 Firebase 电话验证
- tensorflow - 我需要帮助理解强化学习代码
- reactjs - How to fetch Data in Common Component from different Routs?
- python - 类型错误:fit() 缺少 1 个必需的位置参数:请输入“y”
- python - PyQt5 equivalent to a WPF StackPanel
- python - how to determine face similarity based on face landmark in an image?
- node.js - 当用户关注用户时如何添加 ejs if 语句将显示取消关注按钮,反之亦然
- java - Can't delete SQLite column with (Begin Transaction) method
- javascript - 在快速静态中使用中间件在节点 js 中不起作用