【问题标题】:How can I organize an array based on a pattern?如何根据模式组织数组?
【发布时间】:2021-12-07 13:59:34
【问题描述】:

我对编码很陌生,我正在练习一些数组操作。基本上,我正在尝试组织这个数组:

const sequence = ["abc", "abcd", "bca", "bdc", "cbd", "bdc", "acb"];

到这样的事情:

[[ 'abc', 'bca', 'acb'], ['bdc', 'cbd', 'bdc'], ['abcd']]

到目前为止,这就是我所拥有的:

const sequence = ["abc", "abcd", "bca", "bdc", "cbd", "bdc", "acb"];

let finalSequence = [];
let sequence2 = [];
let sequence3 = [];
let sequence4 = [];
sequence.forEach(element => {
  for (const elem of element ) {
    sequence2 = sequence.filter(e => e.includes(elem) && e.length === element.length)
    sequence3 = sequence.filter(e => !e.includes(elem))
    sequence4 = sequence.filter(e => e.includes(elem) && e.length !== element.length)
    return sequence2, sequence3, sequence4
  }
})
console.log(sequence2)
console.log(sequence3)
console.log(sequence4)

finalSequence.push(sequence2, sequence3, sequence4)

这仅适用于提供的数组,但一旦我开始对其进行测试并对其进行更多尝试,很明显这不是正确的方法。

非常感谢有关如何解决此问题的任何建议或意见。非常感谢!

【问题讨论】:

  • 您以这种方式对元素进行分组的标准是什么?
  • 嗨,安迪!特定数组中的每个元素必须具有相同的长度和项,这是一个序列问题。所以 abc's、bcd's 和 abcd 应该分组在各自的数组中。

标签: javascript arrays sorting


【解决方案1】:

您可以规范化每个字符串以获得排序的字母并将其用作所有相似字符串的组。

const
    sequence = ["abc", "abcd", "bca", "bdc", "cbd", "bdc", "acb"],
    grouped = Object.values(sequence.reduce((r, s) => {
        const key = Array.from(s).sort().join('');
        (r[key] ??= []).push(s);
        return r;
    }, {}));

console.log(grouped);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-03
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
相关资源
最近更新 更多