indexOf为数组中存在的值返回-1
indexOf returns -1 for value that exists in array
我有一个定义如下的数组:
var numeric = [{ Value: "0" }, { Value: "1" }, { Value: "2" }, { Value: "3" }];
我正在尝试确定这个数组中是否存在特定的值。我已经尝试了以下所有行,它们都返回-1
。
numeric.indexOf(1);
numeric.indexOf("1");
numeric.indexOf({Value: "1"});
假设我无法控制如何定义数组。如何确定某个值是否存在于这种特定类型的数组中?
您必须遍历数组并检查属性。
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);
您可以使用循环遍历对象:
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");
}
}
由于数字是一个数组,因此可以使用.findIndex()
:
var search = 1;
var found = numeric.findIndex(function(n) {return n.value == search});
finded将是值为==1的项的索引,如果未找到,则为-1。此处引用。
如果您需要布尔结果,最好使用.some()
:
var found = numeric.some(function(n) {return n.value == search;});
此处引用。请注意,较旧的浏览器不支持这两个功能。
相关文章:
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 检查数组中是否存在字符串值,并返回找到的数组值js
- undercore返回数组中对象的indes,其中单词存在于对象中的句子中
- ajax请求返回me“;错误404”;即使资源存在
- 为什么indexOf()在值存在时仍然返回-1
- 存在从函数返回值的问题
- chrome.tabs.onUpdated返回了一个没有'不存在
- 是否仍然存在获取Rest服务调用以返回纯字符串的方法
- 比较字符串,如果存在小的拼写错误,则返回 true
- 是否存在 document.getElementById('element')的情况;将返回未定义
- 函数:根据字符串中是否存在子字符串返回 True/False
- 返回不一致结果的日期(取决于是否存在前导零)
- 脚本返回页面上不存在的元素
- Mongo 返回未定义但数据存在
- 检查本地映像是否存在始终返回 true
- 在数据不存在的情况下返回零计数
- Javascript 如果元素不存在返回,则导致对象不起作用
- 如果 HTML 标记仅存在于字符串的开头,则返回 false
- 为什么在 JavaScript 中引用对象的不存在属性不会返回引用错误
- 如果数组中不存在,则返回值