2017-06-23 2 views
0

私は既に検索しましたが、一致するものはありませんので、レトリックに尋ねる前に貼り付け検索を忘れてください。 :)とにかくJS内のJSONオブジェクトを反復処理し、条件に基づいて特定のJSON行を削除する方法

は、JavaScriptの(ES6)で、私は、私はJSONの行を削除することを知って、このJSON

var myJson = { 
    'hello' : {x: 11, y:22}, 
    'there' : {x:99, y:100} 
}; 

を持っている私が必要とするすべては、キーワード しかし、私は、削除したいの削除で属性条件に基づいて、例えば、私はもちろん

delete myJson['there']. 

によって削除しかし、問題は、私は事前に知る方法はありません、であることができ、Xが50以上である行を、削除したいれますどのキーが私は削除を使用することはできません条件。私は、このJSONをループしてループインデックスを取得することができないので、配列ではなくオブジェクトであるため、JSONの行をスプライスすることもできます(実際にはわからない) X> 50行を除外するための条件に基づいて

は、最終的に意図した出力は次のようになります。

myJson = { 
     'hello' : {x: 11, y:22} 
    }; 

ありがとう!

+0

を、それはただのオブジェクトです。 JSONは 'JSON.stringify(variableHere)'で作成されたオブジェクトの文字列バージョンです。 – Clonkex

+0

@vhutchisonあなたのポイントは何ですか?これは配列ではありません。 – Clonkex

答えて

0

これを試してください。 hasOwnPropertyチェックの理由は、キーがオブジェクトの実際のプロパティであり、プロトタイプから来ないことを確認するためです。

var myObject = { 
 
    'hello' : {x: 11, y:22}, 
 
    'there' : {x:99, y:100} 
 
}; 
 

 
for(var prop in myObject) { 
 
    if(myObject.hasOwnProperty(prop)) { 
 
     if(myObject[prop].x > 50) { 
 
      delete myObject[prop]; 
 
     } 
 
    } 
 
} 
 

 
console.log(myObject);

それはJSONではなかったので、私はmyObjectに変数の名前を変更しました。オブジェクトからJSONを取得するには、次のようにこれを行うだろう:

JSONではありません

var myObject = { 
 
    'hello' : {x: 11, y:22}, 
 
    'there' : {x:99, y:100} 
 
}; 
 

 
var myJson = JSON.stringify(myObject); 
 

 
console.log(myJson);

+0

うわー、結局は可能です! :)ありがとう –

+0

@AdrianBorja確かです!あなたがJSを初めて使っているのであればちょっと混乱します。他の質問がある場合はお知らせください:) – Clonkex

0
var myJson = { 
    'hello' : {x: 11, y:22}, 
    'there' : {x:99, y:100} 
}; 


for(i in myJson) { 
    if (myJson[i].x > 50) { 
    delete myJson[i]; 
    } 
} 
関連する問題