javascript - 如何在 JS 中正确地对特定对象进行子集化
问题描述
我目前正在做一些练习,我想在这个 api 上打印每部电影的标题:
https://jsonmock.hackerrank.com/api/movies?Year=1998
基本上,我希望为第一页(或者最好是特定页面)打印每个标题。
这是我的代码:
<script>
function printTItles(year) {
var res;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
res = JSON.parse(this.responseText);
for(var i=0;i<res.per_page;i++){
document.getElementById("demo").innerHTML = res.data.i.Title;
}
};
}
xmlhttp.open("GET", "https://jsonmock.hackerrank.com/api/movies?Year=<year>", true);
xmlhttp.send();
}
</script>
我知道问题出在哪里,res.data.i.title
但我不确定如何解决。
解决方案
您正在尝试访问i
循环中索引处的元素,就像访问对象的属性一样。要获取数组中某个位置的元素i
,res.data
您需要方括号访问[ ]
此外,您不会将year
请求中的year
参数替换为传递给函数的参数。你可能想检查一下。
这里我以年份2018
为例。
function printTItles(year) {
var res;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
res = JSON.parse(this.responseText);
for(var i=0;i<res.per_page;i++){
document.getElementById("demo").innerHTML = res.data[i].Title;
}
};
}
xmlhttp.open("GET", "https://jsonmock.hackerrank.com/api/movies?Year=2018", true);
xmlhttp.send();
}
printTItles();
<div id="demo"></div>
您可以添加更多改进。例如,在每次迭代中,您都在替换#demo
元素的内容。这会导致仅显示最后一个标题。相反,您可以将数据附加到 div 的现有 html 中。或者,就像我在这种情况下所做的那样,在将其设置为新innerHTML
值之前构建您的字符串。
function printTItles(year) {
var res;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
res = JSON.parse(this.responseText);
var output = "";
for(var i=0;i<res.per_page;i++){
if(res.data[i]) {
output += res.data[i].Title + '<br />';
}
}
document.getElementById("demo").innerHTML = output;
};
}
xmlhttp.open("GET", "https://jsonmock.hackerrank.com/api/movies?Year=2018", true);
xmlhttp.send();
}
printTItles();
<div id="demo"></div>
我还添加了一个条件来检查res.data[i]
.
推荐阅读
- react-testing-library - 我可以在反应测试库中为我的所有渲染函数使用提供程序吗?
- javascript - Vue-Test-Utils、Jest、Unit-Test:无法使用子组件中的 mount 和 &refs 方法调用读取大子组件的属性
- python - 从文本文件中读取 Python 列表
- github - 使用个人访问令牌创建 Github 拉取请求所需的 OAuth 范围
- java - 必须在调用 save() edu.uptc.entity.Resident 之前手动分配此类的 id
- r - 为什么 glm 修剪一列?
- python - 如何获取嵌套列表的列表级别并将它们添加为元组?
- flutter - 如何在 Flutter 中绘制带有线条的列表
- r - R中的华夫饼图图标
- reactjs - 根据条件动态加载所有路由时如何重定向到路由?