【发布时间】:2020-03-23 01:41:06
【问题描述】:
我有一个 JSON 文件:
[
{
"id": 1,
"color": "Blue",
"availability": false
},
{
"id": 2,
"color": "Pink",
"availability": true
}
]
我想要实现的是让带有“availability : true”的 JSON 自动出现在“availability : false”之上。使粉红色出现在蓝色上方,如下所示:
到目前为止,这是我的代码,它只是按照与 JSON 文件相同的顺序显示它们:
import React, { Component } from 'react';
import './styles.css'
class GetOnlinePosts extends Component {
constructor(props){
super(props);
this.state = {
error : null,
isLoaded : false,
posts : []
};
}
componentDidMount(){
fetch("https://api.myjson.com")
.then( response => response.json())
.then(
(result) => {
this.setState({
isLoaded : true,
posts : result
});
},
(error) => {
this.setState({
isLoaded: true,
error
})
},
)
}
render() {
const {error, isLoaded, posts} = this.state;
if(error){
return <div>Error in loading</div>
}else if (!isLoaded) {
return <div>Loading ...</div>
}else{
return(
<div>
<div className="tiles">
{
posts.map(post => (
<div key={post.id}>
<div className="tile">
<p className="color">{post.color}</p>
</div>
</div>
))
}
</div>
</div>
);
}
}
}
export default GetOnlinePosts;
我不确定如何实现这一点,并且到目前为止一直在努力寻找任何建议,所以任何帮助都会很棒。
【问题讨论】:
-
.sort()他们先在availability上,然后再打电话给.map() -
也许你可以将这个对象数组分离到另外两个数组中,一个是可用的,另一个是不可用的(使用
map,filter或类似的东西),然后运行可用的优先,这样“粉红色”的将首先出现。或者只是.sortavailability的数组@ -
在从
componentDidMount函数返回之前,您需要.sort您的数据。 -
[...posts].sort((a, b) => b.availability - a.availability).map(...)
标签: javascript json reactjs