Javascript对象的函数返回undefined还是总是false?

时间:2018-03-18 14:52:21

标签: javascript function object comparison

好的,所以我非常确定我只是因为我对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"的字符串。至少在我测试的情况下。

我希望这不像我想的那样愚蠢。

1 个答案:

答案 0 :(得分:0)

@Quentin所说的是soundcloud api返回一个JSON对象,你应该解析它 - 不是通过split()。

据说它仍然没有解释你的错误。如果searchArray [37]和searchArray [19]确实只是字符串" true"和"所有",然后别的东西是错的。尝试发布用于创建track01对象的实际代码以及如何使用可用属性。