我有以下代码(jsfiddle):
var obj = {
x: 48,
y: 13
};
var main = [{
x: 8,
y: 3
}, {
x: 82,
y: 31
}, {
x: 48,
y: 13
}, {
x: 28,
y: 31
}];
var result = $.grep(main, function (e) {
return ((e.x == obj.x) && (e.y == obj.y));
});
var index = main.indexOf(obj);
if (result.length > 0)
main.splice(index, 1);
我知道这是一个对象数组。除了自己迭代获取索引然后拼接还有什么办法吗?
最佳答案
您实际上已经有了索引。 $.grep()
方法的回调将索引作为第二个参数。所以你可以这样写:
var obj = {
x: 48,
y: 13
};
var main = [{
x: 8,
y: 3
}, {
x: 82,
y: 31
}, {
x: 48,
y: 13
}, {
x: 28,
y: 31
}];
var index;
var result = $.grep(main, function (e, i) {
var res = (e.x == obj.x) && (e.y == obj.y);
if (res) {
index = i;
}
return res;
});
if (result.length > 0)
main.splice(index, 1);
如果多次出现,这将为您提供最后一个索引。如果您想要第一个索引(就像您在数组上使用 indexOf
获得它一样),您需要确保一旦设置了 index
,它就不会被覆盖。
关于javascript - IndexOf 和 .splice() 等效于对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17798278/