2011-07-21 7 views
1

マイオブジェクトの私の配列から不要なキーを削除します。は、私の場合には動作していないオペレータを削除...ユーザーID、それからユーザー名のようにキーを削除する方法...私は、キーを選択した意味</p> <p>オブジェクト

for (i=0 i <obj.length; i ++) { 
    delete obj[i]['keyName']; 
} 

上記は動作しません。どちらもエラーをスローしません。他の方法...

+1

'DELETE'必要があります作業。フルコードを表示 – Raynos

+0

あなたはおそらく間違った方法で 'for'ループを使用しています。 – duri

答えて

0

、私はあなたがやっている間違いわからないです..

http://jsfiddle.net/spechackers/43hTD/

+0

バイリンガルとこのアプローチにも感謝しています。 –

+0

@John:アレイ上で 'for ... in'ループを使うのは悪い習慣です。反復の順序は保証されず、インデックス以外の列挙可能なプロパティも繰り返し処理されます。あなたがこのソリューションを実装しているかどうかを考えるだけです。 –

+0

@Andy E:あなたはフィドルや他の反応について話していますか?私はちょうど削除が動作するOPを示していました... – Thalaivar

6

i=0の後に;が見つかりませんでした。 MyObject.PatientVitalsGetResult.Vitals

+0

'MyObject.PatientVitalsGetResult.Vitals' actualy –

+0

@Molecule - 良いキャッチ、ありがとう。 – Quentin

1

deleteを使用しないでくださいする必要がありますobjさらに

、。それを削除するのではなく、要素をundefinedに設定します。代わりに、spliceを使用してください。

var i; 
for(i = 0; i < obj.length; i++){ 
    obj[i].splice('keyName',1); 
} 
+0

@wanovok:プロパティスライスibオブジェクトを呼び出すことができないというエラーが表示されます。 –

+2

個々の配列要素ではなく、配列内の各オブジェクトから名前付きキーを削除することが目的です。 – Quentin

1

これには標準的な方法はありません。古いObjectが不要なプロパティをフィルタリングの条件付きコピーを実行する必要があります。

var oldObject = { /* your object */ } ; 
var newObject = { } ; 

var filter = { "UserID": true , "UserName": true } ; 

for(var key in oldObject) 
    if(!(key in filter)) newObject[key] = oldObject[key] ; 

そして、次のコードで取得newObjectを使用しています。

動作するはずです。このソリューションについて....

Array.prototype.containsValue = function (value) { 
     for (var k in this) { 
      if (!this.hasOwnProperty(k)) { 
       continue; 
      } //skip inherited properties 
      if (this[k] == value) { 
       return true; 
      } 
     } 
     return false; 
    }; 

for (var key in Object) { 
    var unwantedKeys = ['UserName', 'UserID']; 
    if (unwantedKeys.containsValue(key)) continue; 
    // Play with your Object it won't contain these unwanted keys. 
} 

を削除する方法

+0

私は本当にこれをやっていません...その高価で、必要ではない... – Thalaivar

+0

私はあなたの批判を理解していません。このアプローチはどのようにコストがかかりますか?どのようにして "不要"なのでしょうか(特に 'Object'からエントリを削除する方法が他にない場合)。 – FK82

1
var vitals = obj["PatientVitalsGetResult"]["Vitals"]; 


for (i=0; i < vitals.length; i++) { 
    delete(vitals[i]["UserID"]) 
}; 
関連する問題

 関連する問題