我有一个像这样定义的数组:
var numeric = [{ Value: "0" }, { Value: "1" }, { Value: "2" }, { Value: "3" }];
我正在尝试确定此数组中是否存在特定值。我已经尝试了以下所有返回-1
的行。
numeric.indexOf(1);
numeric.indexOf("1");
numeric.indexOf({Value: "1"});
假设我无法控制数组的定义方式。如何确定此特定类型的数组中是否存在值?
答案 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;
答案 1 :(得分:2)
您必须遍历数组并检查属性。
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;
答案 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。请注意,旧浏览器不支持这两种功能。