[英]How to remove array object from a variable in javascript by using for loop?
[英]Javascript remove object from array using object variable
因此,我嘗試使用數組,並且出於演示目的,我使用點作為示例濃縮了代碼。 我想創建一個點並將其推入數組,並在完成操作后想從數組中刪除該點。
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
。
為什么不使用過濾器從PointArray中刪除元素
var PointArray = [];
function CreatePoint(X,Y){
this.x=X;
this.y=Y;
PointArray.push(this);
}
function RemovePoint(PointObject){
PointArray = PointArray.filter(singlePoint=>!(singlePoint.x==PointObject.x && singlePoint.y==PointObject.y));
}
var xPoint = new CreatePoint(10,10);
var yPoint = new CreatePoint(20,20);
//do stuff
console.log(PointArray);
RemovePoint(xPoint);
console.log(PointArray);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.