首页 > 解决方案 > JavaScript:测试输入参数是否为数组;如果是,则将数组合并为一个大数组

问题描述

我有以下变量是数组:

const gumBrands = ['orbit', 'trident', 'chiclet', 'strident'];

const mintBrands = ['altoids', 'certs', 'breath savers', 'tic tac'];

下面我有以下使用变量作为输入参数的函数:

function shallowCopy (arrOne, arrTwo) {

    if (arrOne.constructor === 'Array'){

        return [...arrOne, ...arrTwo]; 
    }

    else {
        console.log('test this'); 
    }
}


shallowCopy(gumBrands, mintBrands)

我期待我的代码返回:

[ 'orbit',
  'trident',
  'chiclet',
  'strident',
  'altoids',
  'certs',
  'breath savers',
  'tic tac' ]

相反,代码运行我的 else 语句并返回:test this

我究竟做错了什么?

标签: javascriptarraysfunctionif-statementarguments

解决方案


.constructor不包含字符串"Array",而是对全局Array对象的引用。

请注意,数组可以被子类化,并且它们.constructor是不同的。您可能要考虑使用instanceof Array.


推荐阅读