2017-06-03 12 views
-2

私は、次のようなJSON構造を持っている:私は私のJSONデータから"type":0,"id":15を削除するにはどうすればよいJSONデータを削除するにはどうすればよいですか?

[{ 
    "type": 0, 
    "id": 1, 
    "children": [{ 
     "type": 0, 
     "id": 14 
    }, 
    { 
     "type": 0, 
     "id": 1 
    }] 
}, 
{ 
    "type": 0, 
    "id": 16, 
    "children": [{ 
     "type": 0, 
     "id": 15, 
     "children": [{ 
      "type": 0, 
      "id": 13 
     }, 
     { 
      "type": 0, 
      "id": 17 
     }, 
     { 
      "type": 0, 
      "id": 18 
     }] 
    }] 
}] 

JavaScriptが
+0

JSONは中括弧 '{}'で始まり、角括弧 '[]'ではじまりません。有効な構造を使用して、問題に関する詳細情報を提供してください。 –

+1

@ShammelLee JSON配列には中括弧の代わりに角括弧が使用されているため、JSON構造体は実際には有効です(オブジェクトではなく配列です)。 – Frxstrem

+0

{}はJSONオブジェクトを表します。 []はJSON配列 –

答えて

1

var input = [{"type":0,"id":1,"children":[{"type":0,"id":14},{"type":0,"id":1}]},{"type":0,"id":16,"children":[{"type":0,"id":15,"children":[{"type":0,"id":13},{"type":0,"id":17},{"type":0,"id":18}]}]}]; 
 

 
function filter(input) { 
 
    return input.filter((obj) => { 
 
    if (obj.children) obj.children = filter(obj.children); 
 
    return !(obj.type === 0 && obj.id === 15); 
 
    }); 
 
} 
 

 
var result = filter(input); 
 

 
console.log(result);

このようtype = 0 & id = 15children内の任意のレベルの階層に対して、再帰的に除去されます。

0

JSONコードを見ると、配列に2つのトップレベルのオブジェクト/プロパティがあるようです。これらのオブジェクトの1つに、削除するオブジェクトを含む内部プロパティが含まれています。{type:0、id:15、children:[....]}

ネストされたプロパティがその内部プロパティの値にドット構文または角括弧でアクセスする必要があります。

[ 
    { 
    "type": 0, 
    "id": 1, 
    "children": [ 
     { 
     "type": 0, 
     "id": 14 
     }, 
     { 
     "type": 0, 
     "id": 1 
     } 
    ] 
    }, 
    { 
    "type": 0, 
    "id": 16, 
    "children": [ 
     { 
     "type": 0, 
     "id": 15, 
     "children": [ 
      { 
      "type": 0, 
      "id": 13 
      }, 
      { 
      "type": 0, 
      "id": 17 
      }, 
      { 
      "type": 0, 
      "id": 18 
      } 
     ] 
     } 
    ] 
    } 
] 

あなたの全体の配列を想定すると呼ばれる "ソーダ":たとえば は、ここにあなたのJSONデータである あなたはこのようにアクセス:

ソーダ[1] .children [0]、それは希望[0]や[1]や[55]のように、インデックスを持つ内部の "パーツ"に配列され、オブジェクトはドット表記で内側の部分に移動し、プロパティ名は次のようになります。私の例です。

ソーダ[1]ソーダは配列なので、ドット表記を使用しました。子供はソーダの性質です[1]。 da [1] .childrenは再びインデックスを使用しなければならず、あなたのオブジェクトはその配列内の唯一の要素です(javascriptは0から始まることを覚えていることを忘れないでください0は最初のアイテム、1は2番目のアイテムです)配列のインデックスを再び使用するルールを使用する必要があります。これはソーダ[1] .children [0]になり、必要なオブジェクトがあります!

関連する問題