javascript - Javascript最有效的方法来组合数组元素
问题描述
我正在尝试将字符串数组与独特的组合结合起来,例如 'Mark|Tom' 但没有 'Tom|Mark'
我写了这段代码:
let arr = ['Tom', 'Danny', 'Mark']
let sets = []
for (let i = 0; i < arr.length; i++) {
let others = arr.filter(name => name != arr[i])
others.forEach((other) => {
let newel = arr[i] + '|' + other
let test = newel.split('|')
if (sets.includes(test[1] + '|' + test[0]) || sets.includes(newel)) return
sets.push(newel)
})
}
console.log(sets)
这是遍历每个数组元素,然后从基本数组创建另一个其他元素的数组,然后遍历它们(再次迭代),创建组合,检查我们的元素是否存在反向组合(如果这是在之前的循环中创建的)如果没有这样的组合=将其推送到目标数组。
有没有更优雅的方式来完成这项任务?
解决方案
这个如何:
const arr = ['Tom', 'Danny', 'Mark'];
const sets = [];
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
sets.push(arr[i] + '|' + arr[j]);
}
}
console.log(sets);
您也可以arr
在开始计算之前使唯一:
const arr = [...new Set(['Tom', 'Danny', 'Mark', 'Tom'])]; // ['Tom', 'Danny', 'Mark']
推荐阅读
- angular - 在 Ionic 页面上使用 ngOnInit() 方法 - 我们是否需要导入 OnInit 并编写 Class 实现 OnInit?
- typo3 - 在 FILES-Object 中获取文件的元数据
- python - Python tkinter 按钮事件
- html - 使用纯 css 的位置图标动画
- java - 如何获取歌曲的封面图片?
- python - 如何将此顺序模型更改为功能模型?
- maven - 使用 JDK 10 / JDK 11 和 maven pugin 进行 Proguard
- php - 带有用户输入值的复选框
- json - JSON:Spring Boot 条件验证
- amazon-web-services - 是否可以从订阅中提取 Cloudwatch 日志的内容