44

重複の可能性:
javascript 配列から特定の要素を削除しますか?

値を削除したい配列があります。

これを配列と考えてください

[ 'utils': [ 'util1', 'util2' ] ]

今、私はちょうど削除したいutil2. どうすればいいですか、使ってみdeleteましたがうまくいきませんでした。

誰でも私を助けることができますか?

4

3 に答える 3

11

splice次の方法を使用します。

var object = { 'utils': [ 'util1', 'util2' ] }

object.utils.splice(1, 1);

配列要素の実際の位置がわからない場合は、配列を反復処理し、そこから要素をスプライスする必要があります。次の方法を試してください。

for (var i = object.utils.length; i--;) {
    var index = object.utils.indexOf('util2');

    if (index === -1) break;

    if (i === index) {
        object.utils.splice(i, 1); break;
    }
}

更新: techfoobar の答えは、私のものよりも慣用的なようです。代わりに彼の使用を検討してください。

于 2013-01-27T15:25:45.043 に答える
5

と組み合わせて使用Array.splice()​​するとArray.indexOf()、配列をループすることなく目的の動作を得ることができます。

var toDelete = object.utils.indexOf('util1');
if(toDelete != -1) {
    object.utils.splice(toDelete, 1);
}
于 2013-01-27T15:38:17.103 に答える
0

Javascriptには連想配列というものはないと思います。それは実際にはオブジェクトです。

[ 'utils': [ 'util1', 'util2' ] ]

この行については、コンパイルされないと思います。代わりにこれを書くべきです。

var obj = { 'utils': [ 'util1', 'util2' ] }

したがって、配列(配列内)の要素「util2」を削除するには、2つの方法があります。

  1. pop()を使用する

    obj["utils"].pop(); // obj["utils"] is used to access the "property" of the object, not an element in associative array
    
  2. 長さを短くする

    obj["utils"].length --;
    
于 2013-01-27T15:30:37.967 に答える