当文本框具有一些值(使用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
)。
答案 0 :(得分: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 );
或者在用于查找目标对象的循环中创建新数组,或者使用某种中间数组等。
希望它有所帮助!
答案 1 :(得分:-2)
var arrayWithoutNulls = myArray.filter(function(val) {
if (val) {
return val;
}
});