Javascript 如何获得所有的';项目';从GitHub获取API数组?
我正在尝试获取存储库列表,也就是说,我的代码使用过滤器搜索存储库 Javascript会得到一个结果,其中有多个项目包含每个存储库的数据,这些存储库使用URL:Javascript 如何获得所有的';项目';从GitHub获取API数组?,javascript,async-await,github-api,Javascript,Async Await,Github Api,我正在尝试获取存储库列表,也就是说,我的代码使用过滤器搜索存储库 Javascript会得到一个结果,其中有多个项目包含每个存储库的数据,这些存储库使用URL:https://api.github.com/search/repositories?q=piccolowen+输入:名称 我可以执行console.log(result.items[0].name)以获取第一个存储库的name值,但我希望将搜索中的所有存储库打印到控制台。我还希望代码能够打印所有存储库及其值,而不管有多少repo适合过滤
https://api.github.com/search/repositories?q=piccolowen+输入:名称
我可以执行console.log(result.items[0].name)
以获取第一个存储库的name
值,但我希望将搜索中的所有存储库打印到控制台。我还希望代码能够打印所有存储库及其值,而不管有多少repo适合过滤器
以下是我要添加到的当前代码:
window.onload = func()
async function func() {
const url = 'https://api.github.com/search/repositories?q=piccolowen+in:name'
const response = await fetch(url);
const result = await response.json();
const apiresult = document.getElementById('thisisanid')
console.log(result)
}
有什么办法可以帮你吗
编辑:
我通过这个问题的while循环找到了问题的答案:
constresultlength=Object.keys(result.items).length
var arrnum=0
while(arrnum
编辑2:
我上次编辑的代码将使页面崩溃。仍在为这个巨大的错误寻找解决方案。因为
结果。items
返回一个对象数组,您可以使用它返回所有项目名称,即:
result.items.map(item => item.name)
如果您想简单地过滤掉一些属性,您也可以这样做。假设您想要一个只包含其名称
、id
和说明
的项目数组,则可以执行以下操作:
result.items.map(({ name, id, description }) => ({ name, id, description }))
异步函数func(){
常量url=https://api.github.com/search/repositories?q=piccolowen+在:姓名'
const response=等待获取(url);
const result=wait response.json();
//返回项名称的数组
log(result.items.map(item=>item.name));
//返回具有选定键的对象数组
log(result.items.map(({name,id,description})=>({name,id,description}));
}
func()该数组具有
映射函数
,该函数接受回调函数。它遍历所有元素,调用回调函数,并将数据推送到新创建的数组中
map()方法创建一个新数组,其中填充了对调用数组中的每个元素调用所提供函数的结果
更多信息:
window.load=main();
const nameMapper=(item)=>item.name;
const liMapper=(item)=>`${item.name} `;
异步函数main(){
常量url=”https://api.github.com/search/repositories?q=piccolowen+“姓名”;
const result=wait fetch(url)。然后((x)=>x.json());
const names=result.items.map(nameMapper);
const apireult=document.getElementById(“thisisanid”);
apireult.textContent=名称;
const ul=document.getElementById(“列表”);
ul.innerHTML=result.items.map(liMapper.join)(“”);
}
#列表li{
列表样式:无;
填充物:5px10px;
边框:1px纯黑;
最大宽度:400px;
}
您可以像这样使用
let list = document.getElementById('list');
let htmlTemplate = result.items.map(function(item) {
return item.name
}).join("")
list.insertAdjacentHTML('beforeend', htmlTemplate)
也可以使用模板文本
敌人的例子
返回items.map()中的值时
const array1 = [1, 4, 9, 16];
// pass a function to map
const map1 = array1.map(x => x * 2);
console.log(map1);
// expected output: Array [2, 8, 18, 32]
let list = document.getElementById('list');
let htmlTemplate = result.items.map(function(item) {
return item.name
}).join("")
list.insertAdjacentHTML('beforeend', htmlTemplate)
return `${item.id}: ${item.name}`