我有以下数据集
data=[{name: "hk", age:21, gender:"M"}, {name: "kk", age:31, gender:"M"},{name: "tk", age:11, gender:"F"}]
我如何测试是否有人名"hk"
和找到的对象的索引。
我已使用以下代码进行了检查,但它无效。
data.hasOwnProperty("hk")
答案 0 :(得分:5)
尝试(如indexOf):
var data=[{name: "hk", age:21, gender:"M"}, {name: "kk", age:31, gender:"M"},{name: "tk", age:11, gender:"F"}]
function exists(name){
var item, i = 0;
while(item = data[i++])
if(item.name == name) return --i
return -1
}
alert("Exists tk? - Index: " + exists("tk")); //-1: not exists
答案 1 :(得分:4)
您必须遍历数组并检查每个对象
function hasName(prop, value, data) {
return data.some(function(obj) {
return prop in obj && obj[prop] === value;
});
}
如果你想要返回索引,必须使用一个跟踪索引的循环,比如forEach
而不是
function hasName(prop, value, data) {
var result = -1;
data.forEach(function(obj, index) {
if (prop in obj && obj[prop] === value) {
result = index;
return false;
}
});
return result;
}