好的,所以我非常确定我只是因为我对javascript的新手而愚蠢。 试图找到任何东西,但没有。可能是因为我根本不知道我在寻找什么。
我有一个填充了不同数据的数组。我认为他们都存储为字符串,因为我从网站搜索的XMLHttpRequest中获取它们。
var search = document.getElementById("filter").value;
var xhr = new XMLHttpRequest();
xhr.open('GET', "https://api.soundcloud.com/tracks?client_id=1dff55bf515582dc759594dac5ba46e9&q=" + search, false);
xhr.addEventListener("load", function() {
var searchString = xhr.response;
searchArray = searchString.split(",");
然后我尝试将一些数组的数据存储在对象的不同属性中。对于其中一个属性,我尝试检查数组中的两个位置然后进行比较。出于某种原因,它不会起作用:
track01 =
{..., usable:function(){if(searchArray[37] === "true" && searchArray[19] === "all"){return true;}else{return false;}}, ...};
这总是返回false,即使它应该为真。
我也用==或没有引号尝试过。 (在任何一方和两侧)
我尝试的另一件事是摆脱if / else:
track01 =
{..., usable:function(){searchArray[37] == "true" && searchArray[19] == "all"};
由于某种原因,这总是返回undefined。
要明确:searchArray [37]是一个包含内容" true"的字符串。和searchArray [19]一个包含内容" all"的字符串。至少在我测试的情况下。
我希望这不像我想的那样愚蠢。
答案 0 :(得分:0)
@Quentin所说的是soundcloud api返回一个JSON对象,你应该解析它 - 不是通过split()。
据说它仍然没有解释你的错误。如果searchArray [37]和searchArray [19]确实只是字符串" true"和"所有",然后别的东西是错的。尝试发布用于创建track01对象的实际代码以及如何使用可用属性。