检查数组中是否存在该对象属性

mys*_*low 1 javascript

我有以下数据集

data=[{name: "hk", age:21, gender:"M"}, {name: "kk", age:31, gender:"M"},{name: "tk", age:11, gender:"F"}]
Run Code Online (Sandbox Code Playgroud)

我怎样才能测试"hk"找到的对象是否有人名和索引.

我已经检查了以下代码,但它不起作用.

data.hasOwnProperty("hk")
Run Code Online (Sandbox Code Playgroud)

Wal*_*anG 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
Run Code Online (Sandbox Code Playgroud)


ade*_*neo 5

您必须遍历数组并检查每个对象

function hasName(prop, value, data) {
    return data.some(function(obj) {
        return prop in obj && obj[prop] === value;
    });
}
Run Code Online (Sandbox Code Playgroud)

小提琴


编辑:

如果您想返回索引,则必须使用一个循环来跟踪索引,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;
}
Run Code Online (Sandbox Code Playgroud)

小提琴