javascript - 我如何构建获取 Swapi 的重新排序数组对象方法
问题描述
我正在构建一个电影网格,它返回他们的 ID、缩略图、标题、剧集编号和发布日期。
如何映射 reorderByDate() 和 reorderByEpisode() 方法以返回重新排序值?
Films.js 组件:
import React, { Component } from 'react';
import axios from 'axios';
import ListFilms from './ListFilms'
class Films extends Component {
constructor(props) {
super(props);
this.state = {
films: [],
}
this.getFilms = this.getFilms.bind(this)
}
getFilms() {
return axios.get('https://swapi.co/api/films')
...
})
}
reorderByDate = () => {
let films = this.state.films.map(item => ({ ...item }));
films.sort((a, b) =>
a.release_date > b.release_date
? 1
: b.release_date > a.release_date
? -1
: 0
);
this.setState({ films });
};
reorderByEpisode = () => {
let films = this.state.films.map(item => ({ ...item }));
films.sort((a, b) =>
a.episode_id > b.episode_id ? 1 : b.episode_id > a.episode_id ? -1 : 0
);
this.setState({ films });
};
componentWillMount(){
this.getFilms();
}
render() {
const { films } = this.state;
return(
<div className="container">
<div className="d-flex justify-content-center align-items-center mb-2">
<p className="mb-0 mr-2">Filter by:</p>
<button onClick={this.reorderByDate} type="button" className="btn btn-warning btn-sm">Released Date</button>
<p className="mb-0 mx-2">or:</p>
<button onClick={this.reorderByEpisode} type="button" className="btn btn-warning btn-sm">Episode Number</button>
</div>
<ListFilms films={films} />
</div>
)
}
};
export default Films;
解决方案
请使用来自https://codesandbox.io/s/zn923169mx的更新代码
reorderByDate = () => {
let films = this.state.films;
// let films = this.state.films;
//console.log("from real",films[0].release_date);
films = films.sort((a, b) => {
let date1 = new Date(a.release_date).getTime();
let date2 = new Date(b.release_date).getTime();
console.log(date1);
return date1 - date2;
});
this.setState({ films });
};
reorderByEpisode = () => {
// console.log(...films.episode_id);
let films = this.state.films;
films = films.sort(function(a, b) {
return a.episode_id - b.episode_id;
});
this.setState({ films });
};
推荐阅读
- matlab - MATLAB 写入字符串,然后将表写入文件
- anylogic - 如何在 Anylogic 中进行 rackPick 后模拟错误的条件?
- mysql - MySQL - 行作为具有值的列
- javascript - GatsbyJS - 在 CSS 中使用 SVG 作为伪背景图像
- php - 我想从控制器访问对象的值到 Laravel Blade 文件
- php - 从 WooCommerce 中的特定产品属性术语名称获取产品
- javascript - 如何在Javascript中通过具有多个条件的对象属性对数组进行排序
- powershell - 如何在选择命令中获取变量值并重定向到powershell中的文件
- php - 如何在codeigniter中查看注册邮箱?
- c++ - GCC 对可能有效的代码抛出 init-list-lifetime 警告?