合并数组数组,而不重复来自同一数组的值

时间:2018-08-02 09:47:47

标签: javascript arrays string merge

我正在寻找一种JavaScript解决方案,以通过合并多维数组而不从同一数组中形成值簇来获取数组。

const collection = [['AA'], ['BBB'], ['CCCC']]

我想要实现的结果是:

const result = ['ACBCABCBC']

该集合将始终进行排序,并且不一定包含比前一个元素大1个元素的子数组,它的长度可以比​​以前的任何元素大。

2 个答案:

答案 0 :(得分:0)

您可以使用.map().reduce().join().split()方法来做到这一点。

  • 首先,您将每个子array转换为string
  • 然后将所有reduce strings合并为一个string
  • 接下来,您将需要使用string将此array转换回.split("")个字符。
  • 最后,您将array改组,然后将其转换回string

这应该是您的代码:

var result = collection.map(e => e.join(""))
  .reduce((a, b) => (a + b))
  .split("");

result = shuffle(result);
result = [result.join("")];

演示:

function shuffle(a) {
  for (let i = a.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [a[i], a[j]] = [a[j], a[i]];
  }
  return a;
}

const collection = [
  ['AA'],
  ['BBB'],
  ['CCCC']
]

var result = collection.map(e => e.join(""))
  .reduce((a, b) => (a + b))
  .split("");

result = shuffle(result);
result = [result.join("")];

console.log(result);

答案 1 :(得分:0)

map.setZoom((map.getBoundsZoomLevel(bounds))); //To rezoom the map
map.setCenter(bounds.getCenter()); //To center the map

检查一下,并告诉我是否存在边缘情况。