因此,我尝试使用数组,出于演示目的,我使用点作为示例来压缩代码。我想创建一个点并将其推送到数组,完成操作后我想从数组中删除该点。
var PointArray = [];
function CreatePoint(X,Y){
this.x=X;
this.y=Y;
PointArray.push(this);
}
function RemovePoint(PointObject){
//????
}
var xPoint = CreatePoint(10,10);
//do stuff
RemovePoint(xPoint);
我正在查看 Array.prototype
手册,PointArray.Splice
似乎是最接近的,但感觉很困惑,因为它需要索引。任何人都有一种干净的方法从数组中删除对象并将其插入函数 RemovePoint
中吗?
最佳答案
要查找数组中某项的索引,请使用 indexOf
:
function RemovePoint(PointObject){
const index = PointArray.indexOf(PointObject);
PointArray.splice(index, 1); // remove one item at index "index"
}
但是如果你正在做这样的事情,你可能会考虑使用Set
,如果你想要一个集合,这可能更合适,但每个对象的索引实际上并不重要- 然后,你可以调用 PointSet.delete(PointObject);
:
const PointSet = new Set();
function CreatePoint(X,Y){
this.x=X;
this.y=Y;
PointSet.add(this);
}
function RemovePoint(PointObject){
PointSet.delete(PointObject);
}
console.log(PointSet.size);
const xPoint = new CreatePoint(10,10);
console.log(PointSet.size);
RemovePoint(xPoint);
console.log(PointSet.size);
作为注释,请确保在调用像 CreatePoint
这样的构造函数时使用 new
。
关于Javascript使用对象变量从数组中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013888/