[JS]不使用数组函数进行数组合并

时间:2017-04-08 21:33:44

标签: javascript

我需要帮助合并两个数组而不使用任何内置函数的数组(没有concat,push,pop,shift,replace,sort,splice等)

我已经达到了这一点但是我被卡住了。

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

2 个答案:

答案 0 :(得分: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]));

答案 1 :(得分: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]));