[英]How to check if value exists in array using javascript
我有一个数组形式:
"localValues" : [
{
"localValId" : "8KfbEozjdQYAefuHF",
"localProductCode" : "291105300",
"localMarkupVal" : "2.8",
"localMembersPrice" : "3344"
},
{
"localValId" : "qdCY6Kkvc7e8m4yxw",
"localProductCode" : "291105300234",
"localMarkupVal" : "2.8432",
"localMembersPrice" : "3344333"
},
{
"localValId" : "i827Eve8zBexRSTSP",
"localProductCode" : "291105300",
"localMarkupVal" : "2.8432",
"localMembersPrice" : "899"
}
我正在尝试返回localProductCode的位置:
var a = localValues;
var location = a.indexOf('291105300');
console.log('location: ' + location)
但是,这将返回-2,这是不正确的,因为该代码确实存在于数组中。 有人可以帮忙吗? 先感谢您!
该数组不包含'291105300'
。
除了直接搜索String之外,您还需要找到一个具有给定键值的对象:
function hasMatch(array, key, value) {
var matches = array.filter(function(element) {
return element[key] === value;
});
return (matches.length > 0);
}
hasMatch(localValues, 'localProductCode', '291105300') // true
console.log(JSON.stringify(localValues).indexOf('291105300') != -1 ? true : false);
以下代码将找到您要查找的值的索引。 如果该值不在数组中,则将返回-1。 摘自此SO帖子 。 我只是在最后添加了警报。
var myArray = [0,1,2]
可能会变成var myArray = localValues;
在这种情况下,您可以将needle
设置为所需的值。
var indexOf = function(needle) { if(typeof Array.prototype.indexOf === 'function') { indexOf = Array.prototype.indexOf; } else { indexOf = function(needle) { var i = -1, index = -1; for(i = 0; i < this.length; i++) { if(this[i] === needle) { index = i; break; } } return index; }; } return indexOf.call(this, needle); }; var myArray = localValues, needle = 3, index = indexOf.call(myArray, needle); // 1 alert(index);
编辑:注意到有些晚,您可能正在数组中寻找KEY。
function GetObjectKeyIndex(obj, keyToFind) { var i = 0, key; for (key in obj) { if (key == keyToFind) { return i; } i++; } return null; } // Now just call the following GetObjectKeyIndex(localValues, "localProductCode");
上面的代码段返回一个ID(如果存在);如果找不到具有该名称的键,则返回null
。
要返回找到该值的所有索引的数组,可以使用map
和filter
:
function findValue(data, key, value) {
return data.map(function (el, i) {
return el[key] === value
}).map(function (el, i) {
return el === true ? i : null
}).filter(function (el) {
return el !== null;
});
}
findValue(data.localValues, 'localProductCode', '291105300'); // [0, 2]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.