保存id的数组而不是对象

时间:2016-05-13 04:51:24

标签: javascript angularjs ng-tags-input

我有这个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会返回一个像{name: "Genre name", id: 4}这样的对象。它将被存储到film.genre中。这是一个问题,因为API服务期望film.genre = [4, ...]基本上它必须是一个id的数组。

我不完全确定如何解决这个问题。我尝试在我的newFilm()方法循环film.genre中创建一个空数组,并将其中的id添加到该数组,而不是将其分配给film.genre。然而,这不起作用,因为当我输出电影后,我仍然得到一个对象数组,其中name:id由一些逻辑。

我在电影中获得了什么:

"genre": [ 0: { "id": 1, "name": "Action" }, 1: { "id": 5, "name": "Comedy" }, ..]  

我需要什么:

"genre" : [1, 5]

1 个答案:

答案 0 :(得分:4)

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,console,output