Javascript 删除元素后对数组重新排序
在我的应用程序中,我有一个项目列表,当检查该列表时,这些项目将被推入一个数组中,当未检查该列表时,这些项目将从数组中删除。 这是密码Javascript 删除元素后对数组重新排序,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,在我的应用程序中,我有一个项目列表,当检查该列表时,这些项目将被推入一个数组中,当未检查该列表时,这些项目将从数组中删除。 这是密码 if (data.selectedInsertion === true) { order.push(data); } else if (data.selectedInsertion === false) { angular.forEa
if (data.selectedInsertion === true) {
order.push(data);
}
else if (data.selectedInsertion === false) {
angular.forEach(order, function (value,key) {
if (value == data) {
delete order[key];
}
})
}
问题是当数组中的第5个元素被删除时,数组将永远缺少该键,因此当我使用
angularjs
在模板中显示它时,它将在位置中显示一个空行或缺少的第5个元素。删除元素后如何重新排列数组。假设数组中的所有值都是唯一的,您可以这样做:
if (data.selectedInsertion === true) {
order.push(data);
}
else if (data.selectedInsertion === false) {
order.splice(order.index(data),1);
}
if(data.selectedInsertion) {
order.push(data);
} else {
order.splice(order.indexOf(data),1)
}
Array.splice从数组中删除元素。
有关详细信息,请查看此链接:
如果数据
不唯一,则仅删除数组中的第一个出现
此外,您还可以省去对
true
和false
的显式检查,特别是因为它似乎是一个布尔值。假设数组中的所有值都是唯一的,您可以这样做:
if(data.selectedInsertion) {
order.push(data);
} else {
order.splice(order.indexOf(data),1)
}
Array.splice从数组中删除元素。
有关详细信息,请查看此链接:
如果数据
不唯一,则仅删除数组中的第一个出现
另外,您可以省略对
true
和false
的显式检查,尤其是因为它似乎是一个布尔值。请记住,永远不要使用delete从数组中删除元素。因为它将删除其键下未定义的元素。因此,您可以将其拼接或过滤掉
过滤掉它:
if (data.selectedInsertion === true) {
order.push(data);
}
else if (data.selectedInsertion === false) {
order = order.filter(function(v){
return v !== data;
});
}
拼接它
if (data.selectedInsertion === true) {
order.push(data);
}
else if (data.selectedInsertion === false) {
order.splice(order.indexOf(data),1);
}
删除用于从对象中删除属性
请记住,永远不要使用delete从数组中删除元素。因为它将删除其键下未定义的元素。因此,您可以将其拼接或过滤掉 过滤掉它:
if (data.selectedInsertion === true) {
order.push(data);
}
else if (data.selectedInsertion === false) {
order = order.filter(function(v){
return v !== data;
});
}
拼接它
if (data.selectedInsertion === true) {
order.push(data);
}
else if (data.selectedInsertion === false) {
order.splice(order.indexOf(data),1);
}
删除用于从对象中删除属性
你必须把它切成薄片。您可能会混淆这里的对象和数组。如果您仍然需要键存在,则不要删除元素,而是设置一个值,如false或null,以表示“已删除”的项。您必须对其进行切片。您可能会混淆此处的对象和数组。如果仍然需要密钥,请不要删除元素,而是设置一个值,如false或null,以表示“已删除”的项。虽然此代码片段可能会解决此问题,但确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!应该是order.indexOf(data)虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!应为order.indexOf(数据)