2017-06-28 10 views
0

私はプリロードされたデータの使用を含むプロジェクトに取り組んでいました。私は通常、このようにそれからオブジェクトを削除したい未定義のままでJSONからオブジェクトを削除

var obj = {'objectName0':[object0, object1, object], 'objectName1':[object, object, object], 'objectName2':[object, object, object]} 

: この部分の目的は、次のようなJSONからオブジェクトを削除することです

delete obj[Object.keys(obj)[i]]; 

問題は、しかし、私がなるということです後でそれを使用してループする

obj[data[i]].length, 

このようにわれわれはすべて「未定義」を返します。

このオブジェクトを削除しようとしているときに、名前がわからないので、Object.keys()を使用しています。

+1

「データ」にはどのようなデータが設定されていますか?あなたの 'obj'キーの名前は不明ですが、あなたは' data [i] 'を通してそれらを参照しています。あなたが 'obj'から鍵を削除した後、データが最新であることを確認してください。 – Matt

+0

ここで何をやっているのですか?なぜあなたはこのオブジェクトからランダムなキーを削除していますか?実際には、実動コードの列挙されたプロパティと変数を扱っていますか?これは例のようなものですか?もしあなたがそうしたら、何のリストを格納するために配列を使うのはなぜですか? – Thomas

答えて

0

オブジェクトを不変として扱い、新しいものから変更するのではなく、削除するキーを引いてください。 _.omit()はアンダースコアから使用できます。または同等のヘルパー関数を作成する。

0

新しいオブジェクトを作成することをお勧めしますが、オブジェクト全体をコピーするときにそのオブジェクトをコピーすることはお勧めしません。たとえば、あなたは、オブジェクトを持っていた

var obj = { 
    object1: {...}, 
    object2: {...}, 
    object3: {...} 
}; 

そして、あなたはobject2を削除したいと言います。ただループして、言います。

var new_obj = {}; 
for (var i in obj) { 
    if (i != object2) { 
    new_obj.i = obj.i; 
    } 
} 
関連する問題