数组选择器按属性值的功能

时间:2011-09-27 07:32:51

标签: javascript jquery

我有:

var array = [ { key: '1' }, { key: '2' }, { key: '3' } ]

我想:

var obj = getFirstItem(array, 'key', '2');

结果:

obj = { key: '2' }

在JavaScript或jQuery中是否有这样的功能?

3 个答案:

答案 0 :(得分:3)

我不知道内置函数。但是,自己实现它将是微不足道的:

var data = [ { key: '1' }, { key: '2' }, { key: '3' } ];

function getFirstItem(input, key, value) {
    for(var i = 0; i < input.length; i++) {
        if(input[i][key] === value)
            return input[i];
    }
}

console.log(getFirstItem(data, "key", 2));

答案 1 :(得分:1)

我认为jQuery在这里并不是必需的。功能很简单:

function getFirstItem(arr, k, v){
    for(var i=0;i<arr.length;i++){
      var obj = arr[i];
      if(obj[k] == v)
          return obj;  
    }
    return null;
}

实例:http://jsfiddle.net/QARAd/

答案 2 :(得分:0)

就像其他人说的那样,自己循环遍历阵列非常简单。

但是在JS 1.5中有一个过滤方法(在IE8及更低版本中显然不支持,尽管该链接具有兼容性工作)

var myarray = [ { key: '1' }, { key: '2' }, { key: '3' } ]

function getFirstItem(myarray, key) {
    var result = myarray.filter(function(element, index, array) { 
        return element.key == key;  
    });
    if (result.length) 
        return result[0];
    return null;
}

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter

JSFiddle Example