javascript - 使用 JavaScript 混合数组

标签 javascript algorithm

如下图所示混合多个数组的最佳方式是什么,

附言:

  • 我不知道每个数组的长度是多少

  • 数组将包含 +10000 个元素

  • 数组会多于3个

我已经为它制定了解决方案,但我正在寻找更好的解决方案

mixing arrays

这是我自己的解决方案,我一直在寻找更好的主意

import { compact, flattenDeep } from "lodash/array";

export const doTheMagic = master => {
  const longest = master.reduce((p, c, i, a) => (a[p].length > c.length ? p : i), 0);
  const mixed = master[longest].map((i, k) => {
    return master.map((o, a) => {
      if (master[a][k]) return master[a][k];
    });
  });
  const flaten = flattenDeep(mixed);
  return  compact(flaten);// to remove falsey values
};
const one = [1,2,3];
const two = ['a','b','c','d','e'];
const three = ['k','l','m','n'];
const mix = doTheMagic([one,two,three]);
console.log('mix: ', mix);

最佳答案

您可以使用 lodash 作为您的解决方案。

const { flow, zip, flatten, filter} = _

const doTheMagic = flow(
  zip,
  flatten,
  filter
)

const one = [1, 2, 3]
const two = ['😕', '🤯', '🙈', '🙊', '🙉', '😃']
const three = ['foo', 'bar', 'wow', 'okay']

const result = doTheMagic(one, two, three)

console.log(result)
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>

使用不同长度的数组并使用函数式编程来编写优雅的代码。

这是要运行的代码笔:https://codepen.io/matteodem/pen/mddQrwe

关于javascript - 使用 JavaScript 混合数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58876739/

相关文章:

javascript - 对自己的属性使用 jQuery

java - 布雷森汉姆3d椭球问题

c# - 如何用这种方法计算几本书的接近度?

python - 将 N 个项目的所有组合生成两个袋子,其中每个项目都在一个或零个袋子中

javascript - 单击共享点中的完成按钮后重定向用户时保存调查响应

Javascript 预加载器不等待图像

java - 用 ANN 求解 XOR 的进化算法的改进

algorithm - 离散单元的 3D 椭球体

javascript - 如何将添加到列表框客户端的值存储到 sessionScope

javascript - 如何使文本框平行