indexOf为数组中存在的值返回-1

时间:2014-10-15 18:34:32

标签: javascript

我有一个像这样定义的数组:

var numeric =  [{ Value: "0" }, { Value: "1" }, { Value: "2" }, { Value: "3" }];

我正在尝试确定此数组中是否存在特定值。我已经尝试了以下所有返回-1的行。

numeric.indexOf(1);
numeric.indexOf("1");
numeric.indexOf({Value: "1"});

假设我无法控制数组的定义方式。如何确定此特定类型的数组中是否存在值?

3 个答案:

答案 0 :(得分:2)

你可以循环遍历对象:



var numeric = [{
    Value: "0"
}, {
    Value: "1"
}, {
    Value: "2"
}, {
    Value: "3"
}];

for (var key in numeric) {
    var value = numeric[key];
    if (value.Value == "1") {
        console.log("ok");
    }
}




在@MattBurland评论之后,您也可以使用常规for



var numeric = [{
    Value: "0"
}, {
    Value: "1"
}, {
    Value: "2"
}, {
    Value: "3"
}];

for (var i = 0; i < numeric.length; i++) {
    var value = numeric[i];
    if (value.Value == "1") {
        console.log("ok");
    }
}
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您必须遍历数组并检查属性。

&#13;
&#13;
var numeric =  [{ Value: "0" }, { Value: "1" }, { Value: "2" }, { Value: "3" }];

var index=-1;
for(var i = 0; i<numeric.length; i++)
    if(numeric[i].Value === "2") { 
        index = i; 
        break; 
    }
console.log(index);
&#13;
&#13;
&#13;

答案 2 :(得分:2)

由于数字是一个数组,您可以使用.findIndex()

var search = 1;
var found = numeric.findIndex(function(n) {return n.value == search});

发现将是具有值== 1的项目的索引,如果未找到它将为-1。 Reference here

如果您需要布尔结果,最好使用.some()

var found = numeric.some(function(n) {return n.value == search;});

Reference here。请注意,旧浏览器不支持这两种功能。