【问题标题】:How to concat 2 JavaScript arrays into a new array that is a combination of those two?如何将 2 个 JavaScript 数组连接成一个由这两者组合而成的新数组?
【发布时间】:2019-06-05 21:47:19
【问题描述】:

我想编写一个名为concatArray(array1, array2) 的函数,它接受两个数组作为参数。此函数应返回一个由这两者组合而成的新数组。

我试过了,但在控制台中显示:'array1 is not defined'。

function concatArray(array1, array2) {
    var array1 = [1, 3, 7];
    var array2 = [12, 21, 42];
}
console.log(array1.concat(array2));

预期的输出应该是:1,3,7,12,21,42

【问题讨论】:

  • 你不会在任何地方调用concatArray,那么为什么要定义array1
  • 除了不调用concatArray外,array1只在函数范围内有效。它不存在于函数concatArray 之外。这就是您收到错误的原因。目前还不清楚您的功能应该做什么。你的意思是把console.log 放在函数里面吗?

标签: javascript concat


【解决方案1】:

让我把我的答案分成几个部分:

  • 为什么 array1 '未定义'? 您正在尝试使用一个词法范围为您的函数的变量。查看this post 了解更多信息。本质上,通过在函数内部使用关键字var,您已经声明了一个只能从该函数块内部访问的变量。

如果您要从功能块中调用 console.log,它将被定义。例如:

function concatArray(array1, array2) {
    var array1 = [1, 3, 7];
    var array2 = [12, 21, 42];
    console.log(array1.concat(array2));
}
  • 如何将两个数组作为参数传递? 您当前的实现确实接受两个参数,但您会立即覆盖函数中的值。您可以删除这些声明并依靠调用该函数的代码来定义您的两个数组。

像这样:

function concatArray(array1, array2) {
    console.log(array1.concat(array2));
}
  • 如何编写连接两个数组的函数? 你真的很接近你所拥有的。您忘记了一些事情:1) 函数中的 return 语句 2) 函数的调用。

试试这样的:

// define our function
function concatArray(array1, array2) {
    // return two concatted arrays
    return array1.concat(array2);
}

// define our arrays
var myArray1 = [1, 3, 7];
var myArray2 = [12, 21, 42];

//invoke the function with our arrays as params and assign it to a variable
var result = concatArray(myArray1, myArray2);

//console log new results
console.log(result);

【讨论】:

    【解决方案2】:

    您需要做的是在您的 console.log 语句中完成。但这里是解决方案

    var array1 = [1, 3, 7];
    var array2 = [12, 21, 42];
    
    function concatArray(array1, array2) {
      return array1.concat(array2);
    }
    
    console.log(concatArray(array1, array2));
    

    【讨论】:

      【解决方案3】:

      您的问题不清楚,也许您正在寻找类似的东西?

      function concatArray(arr_1, arr_2)
      {
        return [].concat(arr_1, arr_2)  // eq return arr_1.concat(arr_2) 
      }
      
      var array1 = [1, 3, 7];
      var array2 = [12, 21, 42];
      var array3 = concatArray(array1, array2);
      
      console.log('array1',JSON.stringify(array1));
      console.log('array2',JSON.stringify(array2));
      console.log('array3',JSON.stringify(array3));

      【讨论】:

        【解决方案4】:

        您可以使用 ES6 中的扩展运算符。

        function concatArray(array1, array2) {
            return [...array1, ...array2];
        }
        
        var array1 = [1, 3, 7];
        var array2 = [12, 21, 42];
        console.log(concatArray(array1, array2));
        

        【讨论】:

          猜你喜欢
          • 2021-09-20
          • 2011-04-27
          • 2011-09-17
          • 1970-01-01
          • 2011-06-19
          • 1970-01-01
          • 2018-11-17
          相关资源
          最近更新 更多