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
?