我正在制作一个来自GiantBomb API的应用程序,该应用程序将根据搜索到的查询显示游戏目录。我希望这能显示游戏的图片,标题和添加的日期。
基本上我遇到的问题是API以非常不合逻辑的方式显示游戏的创建日期(例如“1983-12-31 00:00:00”),最后一个字符始终为00:00: 00。 (这完全是多余的)我正在使用.split()
和.join()
删除并用空字符串替换它。虽然有些结果填充了,但我看到了结果,
我受到了这个大错误屏幕的欢迎,因为所有对象都有日期并且相应地被替换,因此我无法理解这个错误:
[ERROR] : Script Error {
[ERROR] : backtrace = "#0 () at :0";
[ERROR] : line = 54;
[ERROR] : message = "'null' is not an object (evaluating 'apiData.original_release_date.split')";
[ERROR] : name = TypeError;
;
[ERROR] : }
这也将随机停止许多其他行的填充,没有明显的原因。所有这些都有自己的日期。
这是全球对象......:
var nameObject = {
name : "",
original_release_date : "",
image : "",
由此循环填充
var posts = json.results;
//Looping through the posts via JSON/////////////////////////
for (var i = 0; i < posts.length; i++) {
var apiData = json.results[i];
nameObject.name = apiData.name;
nameObject.original_release_date = apiData.original_release_date.split("00:00:00").join("");
nameObject.image = apiData.image;
console.log(nameObject.name);
console.log(apiData.original_release_date);
我想避免任何RegExp。任何想法都会受到很大的赞赏。谢谢!
答案 0 :(得分:0)
考虑到您总是在1983-12-31 00:00:00
获得apiData.original_release_date
的价值。
要分割,您可以使用:
nameObject.original_release_date = apiData.original_release_date.split(" ")[0];
P.S:如果您首先检查数据格式(意味着它是否符合您的预期),也会更好。
答案 1 :(得分:0)
我发现了我的问题!所以我想,这完全是API的错。有些original_release_date
值实际上为空,因此为null
。我也注意到了一些图像。我的解决方案基本上是在我的for
循环中打了一堆条件。
//Looping through the posts via JSON/////////////////////////
for (var i = 0; i < posts.length; i++) {
var apiData = json.results[i];
nameObject.name = apiData.name;
if (apiData.original_release_date != null) {
nameObject.original_release_date = apiData.original_release_date.split(" ")[0];
} else {
nameObject.original_release_date = "";
}
if (apiData.image != null) {
nameObject.img = apiData.image.super_url;
} else {
nameObject.img = "";
}
if (apiData.name != null) {
nameObject.name = apiData.name;
} else {
nameObject.name = "(Unknown Game Name)";
}`
如果有人有更有效的解决方案,请告诉我 - 谢谢!