Javascript使用对象变量从数组中删除对象

标签 javascript

因此,我尝试使用数组,出于演示目的,我使用点作为示例来压缩代码。我想创建一个点并将其推送到数组,完成操作后我想从数组中删除该点。

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/

相关文章:

javascript - 使用 jQuery 将焦点集中到表行中的 .next() td 文本框

javascript - 如何将当前日期转换为数字格式?

javascript - angularjs $rootscope 事件不会在父指令上触发

javascript - 如何让下面的jquery代码更加高效

javascript - 当 iframe src 更改时如何运行函数?

javascript - 如何从具有相同类的多个元素中获取随机元素

javascript - 在 jQuery 1.4.2 中添加一个简单的确认/取消对话框

javascript RegEx 检查字符串中的任何字母(但需要忽略其他字形 - 所以不仅仅是 0-9)

Javascript (jQuery) 回调范围问题

javascript - 通过 fs.writeFileSync 写一个可执行的 .sh 文件