オブジェクトが配列であるかどうかを確認するにはどうすればよいですか? [重複] 質問する

オブジェクトが配列であるかどうかを確認するにはどうすればよいですか? [重複] 質問する

文字列のリストまたは単一の文字列を受け入れる関数を作成しようとしています。文字列の場合は、エラーを恐れずにループできるように、1 つの項目のみを含む配列に変換したいと思います。

では、変数が配列であるかどうかをどのように確認すればよいでしょうか?

ベストアンサー1

ECMAScript 標準でObjectのクラスを見つけるために指定されている方法は、toStringのメソッドを使用することですObject.prototype

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

または、文字列typeofかどうかをテストするために次のように使用できます

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

または、パフォーマンスを気にしない場合は、concat新しい空の配列に対して を実行することもできます。

someVar = [].concat(someVar);

直接クエリできるコンストラクターもあります。

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

チェックアウト徹底的な治療からTJ クラウダーの下記のコメント欄に投稿されているように、彼のブログでは次のように書かれています。

チェックアウトこのベンチマークどの方法がより良いパフォーマンスを発揮するかを知るには:http://jsben.ch/#/QgYAV

から@バラス、文字列を配列に変換するには、ES6質問に対して:

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

仮定する:

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']

おすすめ記事