6

私は次のオブジェクトを持っています:

{"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}}

この例では、削除したい

"1":{"cid":"1","uid":"3"}

それから。Stack Overflow で見つけたすべてのソリューションを試しましたが、どれも機能しませんでした。私は主にPHPの人なので、ここで重要なことを見逃しているかもしれませんか?

4

6 に答える 6

14

delete適切なプロパティで使用してください。

var obj = {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}};

delete obj["1"];

"配列インデックスではなく識別子としてマークするために、1の周りに注意してください。

編集 コメントで指摘されているように、プロパティobjのアドレス指定方法に関係なく、オブジェクトであり、配列ではありません 。[1]最後のメモは、配列ではなくオブジェクトを操作していることを明確にすることでした。

私の経験では、ほとんどの人は整数プロパティを配列に関連付け、文字列プロパティをオブジェクトに関連付けます。したがって、指定された方法でプロパティを強調表示する方が役立つと思いました。

于 2012-04-16T13:12:50.737 に答える
4
 var myObj= {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}}

delete myObj['1'];

alert ( myObj['1']);

delete にはクロスプラットフォームの問題があることに注意してください:

クロスブラウザの問題

ECMAScript はオブジェクトの反復順序を実装に依存させますが、すべての主要なブラウザは最初に追加されたプロパティに基づく反復順序をサポートしているように見えるかもしれません (少なくともプロトタイプにないプロパティの場合)。ただし、Internet Explorer の場合、プロパティで削除を使用すると、いくつかの紛らわしい動作が発生し、他のブラウザーがオブジェクト リテラルのような単純なオブジェクトを順序付けられた連想配列として使用できなくなります。エクスプローラーでは、プロパティ値が実際には未定義に設定されていますが、後で同じ名前のプロパティを再度追加すると、プロパティは元の位置で繰り返されます。プロパティを削除してから、再度追加しました。

于 2012-04-16T13:11:40.040 に答える
1

javascript Exで削除を使用できます:

var x = {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}};

delete x['1'];

また、これを確認してください:

JavaScript でのオブジェクトの削除

于 2012-04-16T13:19:37.017 に答える
1

JavaScript には多次元配列はなく、配列とオブジェクトのみがあります。つまりdelete theObject['1'];、問題なく動作するはずです

于 2012-04-16T13:11:51.797 に答える
0

次のように、変数にObject( ではない) を割り当てます。Array

var o = {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}};

次に、次のようにします。

delete o['1'];

それでおしまい!

于 2012-04-16T13:15:31.217 に答える