2016-08-01 8 views
0

私は微妙に変化していて、ループなどを探していましたが、これを行うにはもっと早い方法があると考えました。名前付きオブジェクトをそのオブジェクトのプロパティーに置き換えようとしています

ある
{ 
    thing1: 'value1', 
    thing2: 'value2', 
    thing3: 'value3', 
    something: 'value4' 
} 

、私がしたい:その後、私はとにかく

... lodashのドキュメントで失われてしまった、私は次のオブジェクト -

{ 
    stuff: { 
    thing1: 'value1', 
    thing2: 'value2', 
    thing3: 'value3' 
    }, 
    something: 'value4' 
} 

-andリターン上で実行したいですstuffレベルを削除し、すべてを兄弟として持ちます。簡単/簡潔な方法で、私は意味する。私は_.flatten._flattenDepthを試しましたが、配列でしか動作しません(空の配列を返します)。

ありがとうございました

答えて

1

あなたのベスト/唯一の賭けはループだと思います。

function flattenObject(obj, res) { 
    res = res ? res : {}; 
    Object.keys(obj).forEach(function(d) { 
     if (typeof obj[d] === 'object') return flattenObject(obj[d], res); 
     res[d] = obj[d]; 
    }); 

    return res; 
} 


console.log(flattenObject(a)); 
+0

よろしくお願いいたします。何についての情報ですか? – heydon

+1

それはどんな深さでも動作します@heydon – baao

+1

結果のオブジェクトはresです。関数の最初の行では、resが渡されているかどうか(すでにオブジェクトであるかどうか)をチェックしています。そうでない場合は、空の新しいオブジェクトを作成します。 @heydon – baao

関連する問題