0

私はその他を保持する配列を持っています。コンテンツ、および対応するインデックスでデータのタイプを保持する新しい配列を何らかの方法で作成する必要があるため、次を使用してみました:

typeof ( ["my", "misc", new Data] ), 

しかし、それは私が期待しているものではありません...そのような配列を生成する方法はありますか?

4

3 に答える 3

1

これは、関数を使用して実現できますmap

var types = ["my", "misc", new Data].map(function (item) {
    return typeof item;
});

ただし、これはあなたが探しているものかもしれないと思います:

var types = ["my", "misc", new Data].map(function (item) {
    var name = item.constructor && item.constructor.name;
    return name? name: typeof item;
});

は標準ではないことに注意してFunction.nameください。関数を宣言した方法によっては、関数の名前を見つけるための信頼できる方法がない場合があります。

于 2013-09-03T03:25:37.673 に答える
1

配列コンテキストでは機能しないため、コードは機能しません。typeof配列のタイプを返すだけですobject.

クロスブラウザの解決策は、元の配列の対応する各要素の型で新しい配列を作成することです。

var arr = ["my", "misc", new Data()];

var types = [];
for (var i = 0; i < arr.length; ++i) {
    types.push(typeof(arr[i]));
}

Array.map()または、ワンライナーを使用して同じことを達成するために使用することもできます:)

于 2013-09-03T03:26:53.417 に答える
0
function type( o ) {
    var out = typeof o;
    (
     (
      out =
        ( o && o.constructor === window.constructor ) && 'window'
        || ( ( Object.prototype.toString.call( o ) ).match( /\b(\w+)\]$/ ) )[1].toLowerCase()
     ) === 'number'
    )
    && ( isNaN( o ) && ( out = 'NaN' ) );
    return out;
}
于 2013-09-03T03:42:03.733 に答える