我正在尝试检查JS中的一个值,即页面加载是作为单元素数组返回的,并且在ajax函数作为字符串返回之后。我不知道为什么会这样做,但我正试图用它来扮演角色。
所以,使用console.log(value)
我在页面加载时获得array ['Scranton']
,而ajax甚至返回string "Scranton"
尝试检查此变量时,这不会像我预期的那样工作:
if ( value === 'Scranton' || value === ['Scranton']){
...
}
感谢任何帮助!
答案 0 :(得分:3)
这可能有用,但我会尝试解决潜在的问题,而不是解决它。
if ( value === 'Scranton' || value[0] === 'Scranton'){
...
}
答案 1 :(得分:2)
您可以对数组和字符串使用indexOf
,因此value.indexOf("Scranton") !== -1
将起作用(仅在控制台上对此进行测试)。
但是,您必须首先检查null / false / undefined否则会出错。
if (value && value.indexOf("Scranton") !== -1) {}
编辑:正如菲利克斯所说,对于任何包含"斯克兰顿"的字符串也是如此。如果这是一个问题,那么您可以检查indexOf == 0
,对于以" Scranton"开头的任何字符串都是如此。如果这个解决方案适合您,这实际上取决于您的具体问题。小心使用。
答案 2 :(得分:1)
if (Object.prototype.toString.call(value) === '[object Array]') {
if (value.indexOf('Scranton') != -1) {
/* */
}
} else {
if (value === 'Scranton') {
/* */
}
}
编辑1:
首先,您需要检查“value”是否为数组。如果它是一个数组并包含字符串“Scranton”,您可以使用value.indexOf()
找到它。
如果“value”不是数组,则可以直接将其与字符串'Scranton'进行比较。
答案 3 :(得分:0)
“ajax功能后”是什么意思?页面加载了一个已分配数组值的默认变量,然后发出Ajax请求,这会更改此默认变量,而不是分配的数组,它会分配一个字符串?假设这个“ajax函数”将默认变量更改为来自服务器的响应文本,则存在一个问题:Ajax - 与任何其他请求一样 - 是基于文本的,因此它是一个字符串。如果您使用构建在服务器上的JSON 字符串响应Ajax请求,则需要在浏览器中对其进行解析,以便将其重新解释为数组。请参阅JSON.parse
方法。