javascript - 如何创建函数以对列表中的 args 进行排序
问题描述
您好,我想为列表中的 args 排序创建一些东西,按它们在列表中的次数
所有参数都用一个分隔;
let list = "abcd1; abcd4; abcd4; abcd9; abcd2; abcd5"
该列表可以是 5 个参数,例如 100 或 243。
我认为它可以与两个 for 循环一起使用,以查看 i 元素是否重复并将数组 [i] 与数组 [j] 进行比较,您可以使用临时数组来创建对象,然后再重新分配给主数组。
但不知道该怎么做。
解决方案
- 你的清单
let list = "abcd1; abcd4; abcd4; abcd9; abcd2; abcd5"
- 通过在 ';' 处拆分字符串来创建一个新列表
let newList = list.split(';')
// newList = ["abcd1", " abcd4", " abcd4", " abcd9", " abcd2", " abcd5"]
- 声明一个空对象并遍历新列表的所有元素并将它们作为键添加到对象中。如果对象中不存在键,则将值设置为 1,否则如果存在键,则将值加 1。
let obj = {}
for (let i of newList) {
let newI = i.trim() // trim() to remove spaces or new line characters
// check if newI is already present in the object, i.e. we've seen it before
// if that's the case then it must have a value so increment that value by 1
if (newI in obj) {
obj[newI] += 1
}
// if newI is not present in the object then we're seeing it for the first time.
// so set its value as 1
else {
obj[newI] = 1
}
}
// obj = {abcd1: 1, abcd4: 2, abcd9: 1, abcd2: 1, abcd5: 1}
- 获取数组中对象的键,最后对该数组进行排序,同时将对象``obj```中的值作为比较参数发送。因为我们想按该值在字符串中出现的次数进行排序。
let arr = Object.keys(obj)
// arr = ["abcd1", "abcd4", "abcd9", "abcd2", "abcd5"]
arr.sort((a, b) => obj[a] - obj[b])
// arr = ["abcd1", "abcd9", "abcd2", "abcd5", "abcd4"]
从字符串中出现次数最少到出现次数最多排序
推荐阅读
- c# - 如何修复此空闲汽车游戏脚本
- r - 从每个文档的唯一单词/术语中访问某些元素
- python - 用于在 Outlook 中获取日历的可恢复内容的 API
- apache-kafka - 消费数据后是否可以从 Kafka 中删除数据?
- r - 使用 rlang::env_get 评估 mutate 调用的祖父母环境中的变量
- mongodb - 通过存储在 MongoDB 文档中的索引来查询数组
- php - 用不同的图像显示相同的产品... PHP
- c# - 如何使用 DeleteSubkeyTree 递归删除注册表项
- azure - 使用 PowerShell 将代码从 GitLab 存储库部署到 Azure Web App
- arrays - 从数组中获取逗号分隔的列表