How to check if an object is an array?

后端 未结 30 2885
名媛妹妹
名媛妹妹 2020-11-21 06:31

I\'m trying to write a function that either accepts a list of strings, or a single string. If it\'s a string, then I want to convert it to an array with just the one item so

30条回答
  •  清酒与你
    2020-11-21 06:52

    The method given in the ECMAScript standard to find the class of Object is to use the toString method from Object.prototype.

    if( Object.prototype.toString.call( someVar ) === '[object Array]' ) {
        alert( 'Array!' );
    }
    

    Or you could use typeof to test if it is a String:

    if( typeof someVar === 'string' ) {
        someVar = [ someVar ];
    }
    

    Or if you're not concerned about performance, you could just do a concat to a new empty Array.

    someVar = [].concat( someVar );
    

    There's also the constructor which you can query directly:

    if (somevar.constructor.name == "Array") {
        // do something
    }
    

    Check out a thorough treatment from @T.J. Crowder's blog, as posted in his comment below.

    Check out this benchmark to get an idea which method performs better: http://jsben.ch/#/QgYAV

    From @Bharath convert string to array using Es6 for the question asked:

    const convertStringToArray = (object) => {
       return (typeof object === 'string') ? Array(object) : object 
    }
    

    suppose:

    let m = 'bla'
    let n = ['bla','Meow']
    let y = convertStringToArray(m)
    let z = convertStringToArray(n)
    console.log('check y: '+JSON.stringify(y)) . // check y: ['bla']
    console.log('check y: '+JSON.stringify(z)) . // check y: ['bla','Meow']
    

提交回复
热议问题