首页 > 解决方案 > 制作一个返回各种数组的函数?

问题描述

我正在尝试定义一个函数,合并,当给定两个包含数字的排序数组时,它会返回两个列表中数字的排序数组。

merge([ 4, 5, 6 ], [ 1, 2, 3, 4 ]) => [ 1, 2, 3, 4, 4, 5, 6 ]
merge([ 4 ], [ 2, 5, 8 ]) => [ 2, 4, 5, 8 ]
merge([ 1, 2, 6 ], []) => [ 1, 2, 6 ]

这是我的代码:

function merge(arr1, arr2) {
  return arr1.concat(arr2).sort(arr1, arr2);
}

虽然输出是正确的,但我被告知——从我的研究和它的自动化测试中——这段代码的风格不好。它写道:

不处理两个相同长度的数组。

不处理较短的第一个数组。

不处理较短的第二个数组。

我可以编写此代码的更好方法是什么?我应该怎么做更好?

标签: javascriptarrays

解决方案


您的代码看起来不错,但是您使用的方式sort不正确。使用排序的一种方法是提供一个函数来比较数组中的两个值,并返回一个数字(正数或负数)来指示这些值的排序。有关排序的更多信息,请参阅本文

考虑对合并方法进行以下更改:

function merge(arr1, arr2) {
  return arr1.concat(arr2).sort(function(valueA, valueB) { return valueA - valueB; );
}

推荐阅读