indexOf返回" -1"什么时候回来" 4"

时间:2013-09-25 15:40:46

标签: javascript indexof

var odd = [1, 3, 5, 7, 9];

function testFunction() {
    numbers = document.getElementById("inputfield").value;

    alert(odd.indexOf(numbers[0]));
}

由于某种原因它会发出“-1”警告,即使我先将“数字”拆分成一个数组。

我甚至尝试了index=number[0];然后alert(odd.indexOf(index));,但它仍然无效

以下是演示http://jsfiddle.net/y0ruba/NUzAD/

4 个答案:

答案 0 :(得分:3)

那是因为number[0]undefined

var number = 1;
var array = [ "a", "b" ]
number[0]; // undefined
array.indexOf(undefined); // -1

如果您将alert行更改为:

alert(odd.indexOf(parseInt(("" + numbers)[0], 10)));

它应该有用。首先将numbers转换为字符串,然后获取0个数字,然后将其强制转换为数字。在JSFiddle中,这给了我4

答案 1 :(得分:2)

number[0]string。您必须在使用indexOf之前将其强制转换,以便与该号码匹配。

var odd = [1, 3, 5, 7, 9];
alert(odd.indexOf(+numbers[0]));

Working demo

答案 2 :(得分:2)

使用parseInt

numbers[0]将返回一个字符串值。因为odd是数字数组, 它无法找到它的索引。因此,使用numbers[0]

parseInt转换为整数

<强> jsFiddle Demo

numbers = document.getElementById("inputfield").value;
var x = parseInt(numbers[0]);
alert(odd.indexOf(x));

答案 3 :(得分:0)

数字没有索引。您可以做的最好的是parseInt((99936).toString()[0]),在您的情况下为9