Javascript AngularJS中的变换数组属性
我在JavaScript中有一个普通数组:Javascript AngularJS中的变换数组属性,javascript,angularjs,angularjs-directive,angularjs-scope,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Angularjs Ng Repeat,我在JavaScript中有一个普通数组: $scope.myArray = [{ "coords" : { "lat" : 0, "long" : 0 } }, { "coords" : { "lat" : 1, "long" : 1 } }, { "coords" : { "lat" : 2, "long" : 2 } }]; 然后,我有角度谷歌地图模块,把这些点画成屏幕的路径 <ui-gmap-google-map center='map.center' zoom='map.zoo
$scope.myArray = [{ "coords" : { "lat" : 0, "long" : 0 } }, { "coords" : { "lat" : 1, "long" : 1 } }, { "coords" : { "lat" : 2, "long" : 2 } }];
然后,我有角度谷歌地图模块,把这些点画成屏幕的路径
<ui-gmap-google-map center='map.center' zoom='map.zoom'>
<ui-gmap-polyline path="myArray" stroke="p.stroke" visible='p.visible' geodesic='p.geodesic' fit="false" editable="p.editable" draggable="p.draggable" icons='p.icons'>
</ui-gmap-polyline>
</ui-gmap-google-map>
是否有任何方法可以简单地将我的第一个数组转换为ui gmap多段线所期望的数组?我在考虑写一个过滤器,但我不确定这是否是最好的方法。位置将被添加(可能会更改)到myArray,我希望Google地图也会随之更新。另一种方法是观察myArray的变化,并每次创建一个新的数组以提供给地图,但似乎有一个非常简单的解决方案我没有找到
例如:path=“myArray | filter:coords”
->有没有办法过滤数组以只返回每个元素的特定字段
编辑:myArray是同步的$firebaseArray()。当后端更新时(我无法控制),Firebase API会自动更新此阵列。您可以使用
演示
var-arr=[{
“coords”:{
“lat”:0,
“长”:0
}
}, {
“coords”:{
“lat”:1,
“长”:1
}
}, {
“coords”:{
“lat”:2,
“长”:2
}
}];
arr=arr.map(函数(e){
返回e.coords;
});
控制台日志(arr);
document.getElementById('output').innerHTML=JSON.stringify(arr,0,2)代码>
正准备提出这个建议。我认为最简单:arr.map(函数(el){returne e.coords;})
谢谢!但是,此函数始终返回一个新数组。有没有办法将其与_memoize函数集成以避免摘要错误(错误:[$rootScope:infdig]10$digest()迭代已达到。)?@FlockDawson Try$scope.myArray=$scope.myArray.map(函数(e){return e.coords;})代码>@FlockDawson不要将数组直接分配到作用域,先将其映射,然后再分配到作用域。这是一个Firebase数组,会有很大的不同。您希望对数据集进行哪些类型的更改?只是附加的吗?现有的协调会被修改吗?
$scope.myArray = [{ "lat" : 0, "long" : 0 }, { "lat" : 1, "long" : 1 }, { "lat" : 2, "long" : 2 }];
arr.map(function(e) { return e.coords; });