转换AngularJS中的数组属性

时间:2015-10-15 05:49:41

标签: javascript angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我在JavaScript中有一个普通数组:

<input type="text" id="tfq" class="tftextinput2" name="business" size="20" maxlength="40" style="width:210px" placeholder="Business e.g. Insurance"/>

然后,我有angular-google-maps模块,将这些点绘制为屏幕的路径。

$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-polyline期望的数组之间进行转换?我在考虑编写一个过滤器,但我不确定这是否是最好的方法。职位将被添加(并可能更改)到myArray,我希望Google地图随之更新。另一种方法是观察myArray进行更改并每次创建一个新的数组以提供给Map,但似乎有一个非常简单的解决方案我不知道。

$scope.myArray = [{ "lat" : 0, "long" : 0 }, { "lat" : 1, "long" : 1 }, { "lat" : 2, "long" : 2 }]; - &GT;有没有办法过滤数组只返回每个元素的某些字段?

编辑:myArray是一个同步的$ firebaseArray(enter image description here)。更新后端时,Firebase API会自动更新此阵列(不受我的控制)。

1 个答案:

答案 0 :(得分:3)

您可以使用map

arr.map(function(e) { return e.coords; });

<强>演示

var arr = [{
  "coords": {
    "lat": 0,
    "long": 0
  }
}, {
  "coords": {
    "lat": 1,
    "long": 1
  }
}, {
  "coords": {
    "lat": 2,
    "long": 2
  }
}];

arr = arr.map(function(e) {
  return e.coords;
});

console.log(arr);
document.getElementById('output').innerHTML = JSON.stringify(arr, 0, 2);
<pre id="output"></pre>