【发布时间】:2021-07-25 17:15:13
【问题描述】:
我使用 Vue.js 2,并且我有一个从 API(https://developers.themoviedb.org/3/getting-started/introduction 这个)获取的对象数组,该 API 链接到一个变量,该变量是输入的 v-model。因此,每当变量更改时,数组也会随着@keyup 时调用 API 的函数而更改。 该数组是关于电影和电视节目的。 它的结构如下:
(20) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, __ob__: we]
0:
backdrop_path: (...)
first_air_date: (...)
genre_ids: Array(3)
0: 18
1: 80
2: 9648
length: 3
__ob__: we {value: Array(3), dep: ce, vmCount: 0}
__proto__: Array
genres_name: ["Mistero"]
id: (...)
media_type: (...)
name: (...)
origin_country: (...)
original_language: (...)
original_name: (...)
overview: (...)
popularity: (...)
poster_path: (...)
vote_average: (...)
vote_count: (...)
这个数组为我提供了有关电影和电视剧的有用信息,但它并没有给我返回类型,至少不是这些类型的名称,而是在键 genre_ids: Array(3) 中与它们相关的 ID。现在,我调用了另一个 API,它提供了这样的流派列表:
(19) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0:
id: 28
name: "Azione"
__proto__: Object
1:
id: 12
name: "Avventura"
__proto__: Object
2: {id: 16, name: "Animazione"}
3: {id: 35, name: "Commedia"}
4: {id: 80, name: "Crime"}
5: {id: 99, name: "Documentario"}
6: {id: 18, name: "Dramma"}
7: {id: 10751, name: "Famiglia"}
8: {id: 14, name: "Fantasy"}
9: {id: 36, name: "Storia"}
10: {id: 27, name: "Horror"}
11: {id: 10402, name: "Musica"}
12: {id: 9648, name: "Mistero"}
13: {id: 10749, name: "Romance"}
14: {id: 878, name: "Fantascienza"}
15: {id: 10770, name: "televisione film"}
16: {id: 53, name: "Thriller"}
17: {id: 10752, name: "Guerra"}
18: {id: 37, name: "Western"}
length: 19
__proto__: Array(0)
我想要的是比较两个数组的 id 并将流派列表的流派名称传递给每个对象的第一个数组,所以我这样做了
const newArray = this.searchResults.map ((element) => {
let objectResults = element.genre_ids;
console.log('objectResults', objectResults);
let object = element;
console.log('single-object', object);
this.genresName.forEach(genre => {
if (objectResults.includes(genre.id) ) {
object.genres_name = [];
for(var key in genre) {
if (key == 'name') {
console.log('key', genre[key]);
let keyName = '';
keyName = keyName + genre[key];
object.genres_name.push(keyName);
}
}
}
})
console.log(this.searchResults);
我的问题是我可以正确读取每个节目的每个流派的名称,因此 id 比较有效,但是当将它们推送到第一个数组的每个元素时,只有最后一个被推送并且只有一个。大多数节目应该有不止一种类型,因为它们在genre_ids: Array 中有不止一个 id,但我只能获得其中一个,而且总是最后一个
【问题讨论】:
-
您好,尝试使用
splice推送数组中的项目。 -
嗨,我试过这种方式,但它使数组为空
object.genres_name.splice(0, keyName); -
你好,看看这篇文章 (javascripttutorial.net/javascript-array-splice/…) 关于在数组中插入元素。
标签: javascript arrays vue.js object for-in-loop