1

テキストボックスにいくつかの値があり(ng-blurとを使用textbox.value!==undefined)、これらのオブジェクトを配列に入れるときにオブジェクトを作成しています(ここではすべて正常に動作しています)。

チェックボックスをクリックすると(チェックボックスモデルはテキストボックスng-requiredにバインドされます)、そのテキストボックス値を持つ特定のオブジェクトを削除する必要があります。私は使っている:

arr.splice(index,1);

その特定のオブジェクトを配列から削除するには(「月ごと」や「四半期ごと」などの名前に一致させることにより)、nullその特定の位置に作成しています。

例 [オブジェクト、オブジェクト、オブジェクト]

[
{name:"monthly",
  amount:1000 },

{name:"quarterly",
  amount:1200 },

{name:"yearly",
  amount:1300 }
]

表示されるすべての要素を削除した後[]、別の新しいオブジェクトを追加すると、表示され[3:object]、コンテンツは次のようになります[null,null,null,object];

また

中央のオブジェクトを削除すると、name:"quarterly",それ[object,object]が表示されますが、新しいオブジェクトを追加した後、[object,object,null,object]配列の長さが 4 のように配列が表示されます。

なぜそこにありnull、それを配列から削除するにはどうすればよいですか。(チェックするためにもう一度繰り返したくありませんnull)。

4

2 に答える 2

2

あなたのコードがヌル値を作成する理由を、それを見ずに説明するのは困難です。

しかし、それは期待される動作ではないと言えます。

次の例を見て、インスピレーションを得ることができます。

var data = [
{name:"monthly",
  amount:1000 },

{name:"quarterly",
  amount:1200 },

{name:"yearly",
  amount:1300 }
];

var newObjectToBeAdded = { name: "daily", amount:"100" }

function showObjects()
{
     document.body.innerHTML += data + '<hr>';
}

function deleteObjectByName( objectName )
{
    for( var i = 0; i < data.length; i++ )
    {
    	if( data[ i ].name == objectName )
        {
             data.splice(i, 1);
        }
    }
}

function addObjectToData( newObject )
{
    data.push( newObject );
}

showObjects();
deleteObjectByName( "quarterly" );
showObjects();
addObjectToData( newObjectToBeAdded );
showObjects();

推測するだけで、誤って配列を複製している可能性があります。コードのある時点で、次のようなことをしている可能性があります。

var new_array = original_array.splice( index );

または、ターゲットオブジェクトを見つけるために使用するループで新しい配列を作成するか、ある種の中間配列を使用します。

それが役に立てば幸い!

于 2015-08-27T12:41:50.280 に答える