15

重複の可能性:
読み取る前に未定義のjavascriptプロパティを設定する

JavascriptにPythonのdefaultdictに相当するものはありますか?これは、欠落しているキーに対して返される値が定義可能なJavascript配列になります。何かのようなもの:

var a = defaultArray("0");
console.log(a['dog']);
// would print 0

そうでない場合、どのように実装しますか?

4

1 に答える 1

3

いいえ、これはJavaScriptでは不可能です。ところで、あなたは確かに配列ではなくオブジェクト(プロパティ値マップ)を意味していました。2つの解決策:

  • オブジェクトをとして実装しますProxy。これは、必要なことを正確に実行するように設計されています。ただし、これはドラフトにすぎず、現在FirefoxのJavascript1.8.5でのみサポートされています。

  • オブジェクトプロパティの代わりに文字列パラメータでgetter関数を使用します。この関数は、内部の「辞書」オブジェクトで入力キーを検索し、プログラムでミスを処理できます。たとえば、動的に値を作成したり、デフォルト値を返したりできます。

    もちろん、そのようなゲッター関数のファクトリを構築することもできます。

function defaultDict(map, default) {
    return function(key) {
        if (key in map)
            return map[key];
        if (typeof default == "function")
            return default(key);
        return default;
    };
}

var a = defaultDict({cat: 1}, 0);
console.log(a('cat')); // 1
console.log(a('dog')); // 0
于 2012-10-25T00:38:02.327 に答える