2016-06-23 19 views
0

私はアルゴリズムに問題があります。ある配列内のいくつかのjson(未知の構造)ファイルからすべてのキー(入れ子オブジェクト、オブジェクトの配列)を知りたいと思います。未知のjson構造からすべてのjsonキーを抽出します

{ 
    "key": "value to array", 
    "key": [{ 
    "key": { 
    "key": "value" 
    "key": ["value", "value", "value", {"key":"value"}] 
    } 
    }] 
} 

構造が変更されることがあります。

Function(object) { 
    var array_of_all_key = [] 
    return array_of_all_key 
} 

function allKeys(object) { 
    Object.keys(object).reduce((keys, key) => { 

if(typeof object[key] == 'object') { 
    allKeys(object[key]) 
} 

if(tags[key founded on json]) { 
    // my global var 
    tags[key] = tags[key] + 1 
} 

    }); 
} 

答えて

0

使用Object.keys

var obj = { 
    key1: 'foo', 
    key2: 'bar' 
}; 
var keys = Object.keys(obj); 
//keys === ['key1', 'key2']; 
+0

はい、私はJSON –

+0

@MichaelDaviesの構造を知らない、そしてどのようにその問題はまったくありませんか? – zzzzBov

+0

ネストされたキーを取得しないため、完全に機能しません。 – Brant

0

だけObject.keysと再帰関数を使用します。

function allKeys(object) { 
    return Object.keys(object).reduce((keys, key) => 
    keys.concat(key, 
     typeof object[key] === 'object' ? allKeys(object[key]) : [] 
    ), 
    [] 
); 
} 
+0

var array = []にプッシュする方法は? –

+0

それは 'concat'は、オブジェクトが通常の配列である場合、私は疑問に最後のコード – Louy

+0

に動作しないん何ですか? –

関連する問題