检查数组

时间:2015-06-08 23:24:42

标签: javascript

我有以下数据集

data=[{name: "hk", age:21, gender:"M"}, {name: "kk", age:31, gender:"M"},{name: "tk", age:11, gender:"F"}]

我如何测试是否有人名"hk"和找到的对象的索引。

我已使用以下代码进行了检查,但它无效。

data.hasOwnProperty("hk")

2 个答案:

答案 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;
    });
}

FIDDLE

编辑:

如果你想要返回索引,必须使用一个跟踪索引的循环,比如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;
}

FIDDLE