javascript - 在同一索引中将公共(public)数组元素对齐在一起

标签 javascript arrays algorithm

鉴于此输入:

[
    ['a', 'b', 'c']
    ['b', 'c', 'd']
    ['a', 'd', 'b']
]

我想返回这个输出:

[
    ['a',  'b', 'c']
    [null, 'b', 'c',  'd']
    ['a',  'b', null, 'd']
]

使得每个数组中的每个匹配字符串都在数组中的相同位置,任何间隙都是空值。

上下文

enter image description here

我需要像上面那样渲染一堆任意字符串,但要确保列之间的每个公共(public)字符串都渲染在同一水平线上。在此示例中,每个数组都是上图中的一列。一旦我正确设置了底层数组,我就可以使用简单的循环将字符串呈现在正确的位置。

最佳答案

您可以使用 reduce() 方法和一个 ES6 Set 来保持当前值。

const input = [['a', 'b', 'c'],['b', 'c', 'd'],['a', 'd', 'b']]

const all = new Set
const result = input.reduce((r, arr) => {
  arr.forEach(e => all.add(e))
  r.push([...all].sort().map(e => arr.includes(e) ? e : null))
  return r;
}, []);

console.log(result)

关于javascript - 在同一索引中将公共(public)数组元素对齐在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49944658/

相关文章:

javascript - CKEditor 如何以允许 React 识别的方式与 React.js 一起使用?

Javascript:将 JSON 请求传递到新页面

c++ - 在结构未排序数组中将索引向左移动

java - 设计一个比较器来排序单词,以便每个单词的最后一个字母是下一个单词的第一个字母?

python - Python爬网程序-我的算法需要帮助

javascript - 递归过滤具有不同属性的对象数组

javascript - 从 html 文件夹中的 HTML5 桌面应用程序访问本地文件

javascript - 在嵌套的 for 循环中垂直打印数组。 JavaScript

arrays - 填充随机数数组以在Excel vba中求和

java - 枚举以获得固定值并且不使用 map