簡體   English   中英

Javascript使用對象變量從數組中刪除對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM