我想传入以下数组的后三个值,并分别写入三个数组0 : (4) [0.625, 5, 0, 3] 1 : (4) [0.545455, 6, 0, 5] 2 : (4) [0.5, 3, 0, 3] 3 : (4) [0.5, 3, 0, 3] 4 : (4) [0.428571, 3, 0, 4] 5 : (4) [0.428571, 3, 1, 3] 6 : (4) [0.25, 2, 1, 5] 7 : (4) [0.230769, 3, 0, 10] 8 : (4) [0.222222, 4, 0, 14] 9 : (4) [0.2, 2, 0, 8],我已写出代码但无法实现,请帮我改正并优化:this.movieService.good_directors().subscribe((data: any[]) => { this.movies = data; console.log(this.movies) const director = Object.keys(data) const count = Object.values(data) console.log(count) let index const a = [] const b = [] const c = [] for (index in count){ a.push(index[1]) b.push(index[2]) c.push(index[3]) console.log(a,b,c) }
时间: 2024-01-20 19:02:45 浏览: 69
你的代码有几个问题需要修改。
首先,你需要传入数组的后三个值,而不是所有的值,所以你需要对数组进行切片,只取后三个值。可以使用数组的 `slice()` 方法来实现:
```
const lastThree = data.slice(-3);
```
然后,你需要使用 `lastThree` 数组来填充 `a`、`b`、`c` 数组,而不是使用 `count` 数组。你可以使用 `lastThree` 数组的索引来访问每个元素的值:
```
for (let i = 0; i < lastThree.length; i++) {
a.push(lastThree[i][1]);
b.push(lastThree[i][2]);
c.push(lastThree[i][3]);
console.log(a, b, c);
}
```
最后,你需要注意 `index` 变量在循环中的使用。`index` 变量是字符串类型,所以使用 `index[1]` 访问的是字符串的第二个字符,而不是数组元素的第二个值。你应该使用 `for...of` 循环来遍历数组的元素,而不是 `for...in` 循环遍历数组的索引。如果你想使用 `for...in` 循环,应该使用 `count[index]` 来访问数组元素的值。
完整的代码如下:
```
this.movieService.good_directors().subscribe((data: any[]) => {
this.movies = data;
console.log(this.movies);
const lastThree = data.slice(-3);
const a = [];
const b = [];
const c = [];
for (let i = 0; i < lastThree.length; i++) {
a.push(lastThree[i][1]);
b.push(lastThree[i][2]);
c.push(lastThree[i][3]);
console.log(a, b, c);
}
});
```
这个代码可以实现你的要求,并且优化了你之前的代码。
阅读全文