2017-04-08 13 views
-1

我需要帮助合并两个阵列,而无需使用任何内置函数阵列的(无concat,则压入,弹出,移位,替换,排序,剪接等)[JS]数组合并,而不使用数组函数

而我已经到了这一点,但我卡住了。

function addTwoArrays(arr1, arr2){ 
    var merge = [], p; 
    for(p = 0; p < arr1.length; p++){ 
     merge[arr1[p]] = true; 
    } 
    for(p = 0; p < arr2.length; p++){ 
     merge[arr2[p]] = true; 
    } 
    return Object.keys(merge); 
} 
window.alert(addTwoArrays([1,2,3,4],[4,3,2,1])); 

回报是1,2,3,4 - 而不是1,2,3,4,4,3,2,1

+1

'merge'是不是对象 –

+0

你介意如果你的解决方案涉及从arr1和arr2中创建一个字符串,然后添加两个字符串? – Kobbe

+0

为什么不使用数组函数? – PHPglue

回答

2

你只需要一次循环 - 简单地采取arr1.length为起始指数和添加到阵列:

function addTwoArrays(arr1, arr2) { 
 
    let start = arr1.length; 
 
    for (let i = 0; i < arr2.length; i++) { 
 
    arr1[start++] = arr2[i]; 
 
    } 
 
    return arr1; 
 
} 
 

 
console.log(addTwoArrays([1, 2, 3, 4], [4, 3, 2, 1]));

+0

问题是合并将在原地修改第一个数组。 – lazyvab

+1

@lazyvab:OP似乎“需要帮助合并”_,那么这是一个怎样的问题? – dandavis

0

键是在一个JSON对象是独一无二的。所以,Object.keys()将返回每个元素的唯一出现。 相反试试这个:

function addTwoArrays(arr1, arr2){ 
    var merge = [], p, index = 0; 
    for(p = 0; p < arr1.length; p++){ 
     merge[index++] = arr1[p]; 
    } 
    for(p = 0; p < arr2.length; p++){ 
     merge[index++] = arr2[p]; 
    } 
    return merge; 
} 
window.alert(addTwoArrays([1,2,3,4],[4,3,2,1]));