javascript - 无法合并两个对象数组
问题描述
我想合并从 API 调用中收到的两个对象数组(https://developers.themoviedb.org/3/getting-started/introduction这个)。我已经创建了这个简单的函数methods
来合并 Vue 中的两个数组,但是每次我获得一个空数组
mergeArrays(arr1, arr2) {
let arrMerged = [...arr1, ...arr2];
return arrMerged;
}
所以,我认为问题可能出在异步调用上。所以,为了确保数组在返回之前被填充,我放了这个 if 语句,但我什么也没得到,函数没有启动。
mergeArrays(arr1, arr2) {
if (arr1.length == 19 && arr2.length == 16 ) {
let arrMerged = [...arr1, ...arr2];
return arrMerged;
}
}
数组是通过这种方式获得的:
mounted () {
// First Array
// Obtaine movies genres and put them in an re-usable array
axios
.get(`https://api.themoviedb.org/3/genre/movie/list`, {
params: {
api_key: this.apiKey,
language: this.userLanguage,
},
})
.then((response) => {
const genres = response.data.genres;
genres.forEach(element => {
let genreId = element.id;
let genreName = element.name;
this.genresMovies.push(
{
id: genreId,
name: genreName
}
);
});
})
// Second Array
// Obtaine tv genres and put them in an re-usable array
axios
.get(` https://api.themoviedb.org/3/genre/tv/list`, {
params: {
api_key: this.apiKey,
language: this.userLanguage,
},
})
.then((response) => {
const genres = response.data.genres;
genres.forEach(element => {
let genreObj = element;
let genreId = element.id;
let genreName = element.name;
this.genresTV.push(
{
id: genreId,
name: genreName
}
);
});
})
this.genresTV
并且this.genresMovies
是在此处定义data
和填充的空数组。一旦填满,它们就会以这种方式出现:
Array 1
0:
id: 28
name: "Azione"
1:
id: 12
name: "Avventura"
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"
Array 2
0:
id: 10759
name: "Action & Adventure"
1:
id: 16
name: "Animazione"
2:
id: 35
name: "Commedia"
3:
id: 80
name: "Crime"
4:
id: 99
name: "Documentario"
5:
id: 18
name: "Dramma"
6:
id: 10751
name: "Famiglia"
7:
id: 10762
name: "Kids"
8:
id: 9648
name: "Mistero"
9:
id: 10763
name: "News"
10:
id: 10764
name: "Reality"
11:
id: 10765
name: "Sci-Fi & Fantasy"
12:
id: 10766
name: "Soap"
13:
id: 10767
name: "Talk"
14:
id: 10768
name: "War & Politics"
15:
id: 37
name: "Western"
我在第二次之后以这种方式调用该函数axios
const arr = this.mergeArrays(this.genresMovies, this.genresTV);
我不知道出了什么问题
解决方案
这应该有效:
const arr = this.genresMovies.concat(this.genresTV);
推荐阅读
- python - 尝试将带有文件的数据表单转发到另一个 Web 服务
- sql-server - 获取开始和结束标志之间的所有行
- influxdb - 聚合函数 sum() 和 count(Distinct()) 需要超过一分钟才能在 influxsql 中返回结果
- codeigniter - 使用带有 codigniter 的 instamojo 付款成功后如何更新数据库中的付款状态
- azure-data-explorer - Kusto - 每个系列的最后一行按时间戳
- java - 在循环中使用java“for each”和“continue”
- azure - azurerm_virtual_machine_extension 创建过程在 Azure Gov 环境中永远不会停止
- angularjs - 将一组文档从 VIEW(控制器 AngularJS)发送到 ASP.net MVC 中的 CONTROLLER
- node.js - request.url 未定义类型,为什么?
- excel - Excel,基于多列创建重复的指标列