我有这个HTML元素:
<tags-input
ng-model="film.genre"
display-property="name"
key-property="id"
placeholder="Genre"
replace-spaces-with-dashes="false">
<auto-complete source="loadGenres($query)"></auto-complete>
</tags-input>
这将创建一个与Stackoverflow类似的标记输入字段。这是正在使用的程序包http://mbenford.github.io/ngTagsInput/
现在loadGenres将返回一个类似于so {name: "Genre name", id: 4}
的对象。并将其存储在CCD_ 2中。这是一个问题,因为API服务期望film.genre = [4, ...]
,基本上它必须是id的数组。
我不完全确定如何解决这个问题。我试图在newFilm()
方法中使一个空数组循环film.genre
,并将其中的id添加到该数组中,而不是将其分配给film.genre
。然而,这并不起作用,因为当我输出电影时,我仍然会通过某种逻辑得到一个对象数组,其中的名称:id。
我在电影中得到了什么
"genre": [ 0: { "id": 1, "name": "Action" }, 1: { "id": 5, "name": "Comedy" }, ..]
我需要什么:
"genre" : [1, 5]
2019年3月更新
有了ES2015,我们可以写得更简洁。
const result = film.genre.map(({id}) => id);
原始帖子
var result = film.genre.map(function(genre) {
return genre.id;
});
真的应该是你所需要的,请参阅下面的链接,了解你的流派的工作示例。
https://jsbin.com/hoxucikako/edit?js,控制台,输出