Javascript 无法从敲除对象阵列中删除对象

Javascript 无法从敲除对象阵列中删除对象,javascript,google-maps-api-3,knockout.js,Javascript,Google Maps Api 3,Knockout.js,我在从可观察阵列中移除对象时遇到问题 声明如下: self.points = ko.observableArray([]); 它保持着: self.map.points.push(new google.maps.LatLng(a, b)); 我正在尝试使用以下代码从此数组中删除某些元素: self.points.remove(val.internalMarker.position) 其中,val.internalMarker.position保持使用与该点相同的值初始化的相同LatLong

我在从可观察阵列中移除对象时遇到问题

声明如下:

self.points = ko.observableArray([]);
它保持着:

self.map.points.push(new google.maps.LatLng(a, b));
我正在尝试使用以下代码从此数组中删除某些元素:

self.points.remove(val.internalMarker.position)
其中,
val.internalMarker.position
保持使用与该点相同的值初始化的相同LatLong对象

但由于未知原因,remove函数使数组保持不变

你试过这个吗

self.points.remove(function(pos) {
    return pos.lat() == val.internalMarker.postition.lat()
        && pos.lng() == val.internalMarker.postition.lng();
})
除非要移除的对象与要移除的对象完全相同,否则使用单个参数的Knockout的ObservalArray.remove重载将不起作用。在您的问题中,听起来LatLng不是相同的精确对象,只是它包含相同的精确lat&lng值。在这些情况下,您必须传递一个函数来比较两个对象实例之间感兴趣的值。

您尝试过吗

self.points.remove(function(pos) {
    return pos.lat() == val.internalMarker.postition.lat()
        && pos.lng() == val.internalMarker.postition.lng();
})

除非要移除的对象与要移除的对象完全相同,否则使用单个参数的Knockout的ObservalArray.remove重载将不起作用。在您的问题中,听起来LatLng不是相同的精确对象,只是它包含相同的精确lat&lng值。在这些情况下,您必须传递一个函数来比较两个对象实例之间感兴趣的值。

它们不是对同一
LatLng
对象的引用。它是
val.internalMarker
还是
val.internalMarker
?它们不是对同一
LatLng
对象的引用。它是
val.internalMarker
val.InternalMarker