【问题标题】:Merge two arrays alternating value in a functional programming approach [duplicate]在函数式编程方法中合并两个数组交替值[重复]
【发布时间】:2020-06-27 03:02:57
【问题描述】:

如何在函数式编程方法中合并两个数组?

当前

const result = [];
for (let i = 0; i < arr1.length; ++i) {
  result.push(arr1[i]);

  if (i < arr1.length - 1) {
    result.push(arr2[i]);
  }
}

这适用于我需要这样做,但我想看看对我的问题的想法。我尝试了几种不同的方法,但这是我认为最干净的方法。

【问题讨论】:

  • 应该if (i &lt; arr1.length - 1) {if (i &lt; arr2.length - 1) { 吗?
  • 交替值的技术也称为“交错”(如“交错数组”)或“法鲁洗牌”。后者是扑克牌技术(洗牌以便您准确地获得交替牌)以及数学之间的共享术语,它描述了相同的事物,但带有集合/集合。您可以使用这些术语找到更多匹配项,包括 this Code Golf question
  • 你可以使用模运算来交替push(),即if (i % 2 === 0) result.push(arr2[i])

标签: javascript for-loop functional-programming array-merge


【解决方案1】:
function alternatePush (arr1, arr2) {
  let myArray = [];
    for (let i = 0; i < arr2.length; i++){
      myArray.push(arr1[i]);
      myArray.push(arr2[i]);
    }
  return myArray;
}
alternatePush ([1, 3, 5], [2, 4, 6]);

【讨论】:

  • 不错。 arr1.length !== arr2.length(缺失项)或 arr2.length > arr1.length(arr1 超出范围)的情况如何。
  • 这是问题中已经存在的代码,减去可能需要的检查。
  • 如果它们的长度不同,问题又回到了原来的帖子——你打算如何交替它们?如果一个长度为 5,而另一个长度为 7,则较长的必须在某个时候加倍,或者将其余部分附加到末尾。
猜你喜欢
  • 1970-01-01
  • 2012-10-26
  • 2018-04-14
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多