检查JS中的数组

时间:2014-08-14 13:46:00

标签: javascript arrays

我正在尝试检查JS中的一个值,即页面加载是作为单元素数组返回的,并且在ajax函数作为字符串返回之后。我不知道为什么会这样做,但我正试图用它来扮演角色。

所以,使用console.log(value)我在页面加载时获得array ['Scranton'],而ajax甚至返回string "Scranton"

尝试检查此变量时,这不会像我预期的那样工作:

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

感谢任何帮助!

4 个答案:

答案 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方法。