我正在尝试将对象数组排序为具有特定属性的更干净的对象数组。
我正在获取一个返回大量对象的api
目前我还不知道如何获得这样的数组:
results= [
{'author' : Mister1,'url':'http://url1.com','score':400},
{'author' : Mister2,'url':'http://url2.com','score':350},
{'author' : Mister3,'url':'http://url3.com','score':500},
{'author' : Mister4,'url':'http://url1.com','score':456},
]
这是我的代码:
function fetchSearchTopStories(term) {
axios.get(`https://www.reddit.com/r/${term}/top.json`, { responseType: 'json' }).then(response => {
const tab = (response.data.data.children)
for (let i = 0; i < tab.length; i++) {
results.url= tab[i].data.url
results.author = tab[i].data.author
results.score= tab[i].data.score
console.log(results)
}
return results
})
}
不幸的是,这不是在数组中插入,而是每次创建一个只有一个字段而不是多个字段的新数组。
非常感谢您
答案 0 :(得分:0)
您只需要创建一个数组来存储您的result
。为了使其比for循环更容易,您可以使用.map()
通过转换每个对象从旧数组创建一个新数组。
function fetchSearchTopStories(term) {
axios.get(`https://www.reddit.com/r/${term}/top.json`, {
responseType: 'json'
}).then(response => {
const tab = (response.data.data.children)
const results = tab.map(t => {
return {
url: t.data.url,
author: t.data.author,
score: t.data.score
}
});
console.log(results)
});
}
fetchSearchTopStories('javascript');
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
答案 1 :(得分:0)
您还可以通过 ES6 和对象分解来使代码更简洁:
function fetchSearchTopStories(term) {
axios.get(`https://www.reddit.com/r/${term}/top.json`, {
responseType: 'json'
}).then(r => console.log(r.data.data.children.map(({data}) => {
let {url, author, score} = data
return {url, author, score}
})))
}
fetchSearchTopStories('javascript');
<script src="https://unpkg.com/axios@0.18.0/dist/axios.min.js"></script>