首页 > 解决方案 > 合并 2 个不同数据类型的数组

问题描述

我今天和一位同事交谈,他刚刚对一位潜在员工(没有得到报价)进行了白板考试,这让我想知道我是否可以解决这个针对入门级潜在客户的问题。

好吧,我不能。

问题是......将两个排序的数组合并到一个数组中。

arrayOne = ['a', 'b', 'c', ...'z']
arrayTwo = [1, 2, 3, 4, 5, ...100]

result = [1, 'a', 2, 'b', ...26, 'z', 27, 28, ...100]

这里的想法是

a = 1
b = 2
c = 3
...
z = 26

我环顾四周,找不到一个简单的解决方案。请记住,我们主要是 JavaScript,但潜在员工可以使用他们在面试中选择的任何语言。

我尝试的可悲借口:

function merge_arrays(arr1, arr2) {
    let result = [];
    let i1 = 0;
    let i2 = 0;

    for (var i = 0; i < arr1.length + arr2.length; i++) {
        if (arr1[i1] > arr2[i2]) {
            result.push(arr2[i2]);
            i2 += 1;
        } else {
            result.push(arr1[i1]);
            i1 += 1;
        }
    }

    return result;
}

array1 = ["a", "b", "c", "d", "e"];
array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
// returns ["a", "b", "c", "d", "e", undefined, undefined, ...undefined]

在这种情况下,您不能只获取下一个索引并假设它位于正确的位置。

array1 = ["a", "c", "d", "e"];
array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
// should return ["a", 1, 2, "c", 3, "d", 4, ...13]

标签: javascriptalgorithm

解决方案


像这样在数组上做一个 concat

let newArray = [].concat(arr1,arr2)

arr1 和 arr2 可以有不同的类型。


推荐阅读