Javascript 检查JS中的数组

Javascript 检查JS中的数组,javascript,arrays,Javascript,Arrays,我试图检查JS中的一个值,该值在页面加载时作为单个元素数组返回,在ajax函数作为字符串返回后返回。我不知道它为什么要这样做,但我正在努力扮演它的角色 因此,使用console.log(value)我在页面加载时得到array['Scranton'],ajax甚至返回字符串“Scranton” 当尝试检查此变量时,这不符合我的预期: if ( value === 'Scranton' || value === ['Scranton']){ ... } 感谢您的帮助 这可能会奏效,但我会

我试图检查JS中的一个值,该值在页面加载时作为单个元素数组返回,在ajax函数作为字符串返回后返回。我不知道它为什么要这样做,但我正在努力扮演它的角色

因此,使用
console.log(value)
我在页面加载时得到
array['Scranton']
,ajax甚至返回
字符串“Scranton”

当尝试检查此变量时,这不符合我的预期:

if ( value === 'Scranton' || value === ['Scranton']){
    ...
}

感谢您的帮助

这可能会奏效,但我会尝试解决根本问题,而不是解决它

if ( value === 'Scranton' || value[0] === 'Scranton'){
    ...
}

这可能会奏效,但我会尝试解决根本问题,而不是解决它

if ( value === 'Scranton' || value[0] === 'Scranton'){
    ...
}

您可以对数组和字符串使用
indexOf
,因此
value.indexOf(“Scranton”)!=-1
将起作用(刚刚在控制台上测试过)

但是,您必须首先检查null/false/undefined,否则会出错

if (value && value.indexOf("Scranton") !== -1) {}

编辑:正如Felix所说,对于任何包含“Scranton”的字符串,这也是正确的。如果这是一个问题,那么您可以改为检查
indexOf==0
,这对于任何以“Scranton”开头的字符串都是正确的。这真的取决于你的具体问题,如果这个解决方案适合你。小心使用。

您可以对数组和字符串使用
indexOf
,因此
value.indexOf(“Scranton”)!=-1
将起作用(刚刚在控制台上测试过)

但是,您必须首先检查null/false/undefined,否则会出错

if (value && value.indexOf("Scranton") !== -1) {}
编辑:正如Felix所说,对于任何包含“Scranton”的字符串,这也是正确的。如果这是一个问题,那么您可以改为检查
indexOf==0
,这对于任何以“Scranton”开头的字符串都是正确的。这真的取决于你的具体问题,如果这个解决方案适合你。小心使用。

在ajax函数之后“是什么意思?页面加载一个已分配数组值的默认变量,然后发出一个Ajax请求,更改此默认变量,并分配一个字符串,而不是分配一个数组?假设这个“ajax函数”将默认变量更改为来自服务器的响应文本,那么问题就来了:ajax——与任何其他请求一样——是基于文本的,所以它是一个字符串。如果您使用构建在服务器上的JSON字符串响应Ajax请求,则需要在浏览器中对其进行解析,以便将其重新解释为数组。参见方法。

什么是“在ajax函数之后”的意思?页面加载一个已分配数组值的默认变量,然后发出一个Ajax请求,更改此默认变量,并分配一个字符串,而不是分配一个数组?假设这个“ajax函数”将默认变量更改为来自服务器的响应文本,那么问题就来了:ajax——与任何其他请求一样——是基于文本的,所以它是一个字符串。如果您使用构建在服务器上的JSON字符串响应Ajax请求,则需要在浏览器中对其进行解析,以便将其重新解释为数组。参见方法

编辑1:

首先,您需要检查“value”是否为数组。如果它是一个数组并包含字符串“Scranton”,则可以使用
value.indexOf()
找到它。 如果“value”不是数组,您可以直接将其与字符串“Scranton”进行比较

编辑1:

首先,您需要检查“value”是否为数组。如果它是一个数组并包含字符串“Scranton”,则可以使用
value.indexOf()
找到它。
如果“value”不是数组,您可以直接将其与字符串“Scranton”进行比较。

具有相同内容的两个不同数组永远不相等:
[]==[]
false
。有关一般解决方案,请参见。typeof value=='String'具有相同内容的两个不同数组永远不相等:
[]==[]
false
。请参阅以获取一般解决方案。typeof value=='String'对于
“fooscantonbar”
也是如此。您是对的,也许他应该改为检查0。我将更新我的答案。
“fooscantonbar”
也是如此。你是对的,也许他应该改为检查0。我会更新我的答案。请在你的答案中添加一些解释。现在,它被标记为“低质量”。请在你的答案中添加一些解释。现在,它被标记为“低质量”。为了记录在案,这也起到了作用。我对答案的选择只是偏好的问题。谢谢@彼得·索伦森np,我对另一个答案投了更高的票,我认为它是好的。记录在案,这也起了作用。我对答案的选择只是偏好的问题。谢谢@彼得·索伦森,我对另一个答案投了更高的票,我认为它是好的。