首页 > 解决方案 > 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)

这是遍历每个数组元素,然后从基本数组创建另一个其他元素的数组,然后遍历它们(再次迭代),创建组合,检查我们的元素是否存在反向组合(如果这是在之前的循环中创建的)如果没有这样的组合=将其推送到目标数组。

有没有更优雅的方式来完成这项任务?

标签: javascriptarraysset

解决方案


这个如何:

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']

推荐阅读