按属性值的数组选择器函数

Array selector function by property value

本文关键字:选择器 函数 数组 属性      更新时间:2023-09-26

我有:

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

我想:

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

结果是:

obj = { key: '2' }

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

我不知道一个内置的功能。然而,自己实现它将是微不足道的:

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));

我不认为这里真的需要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/

就像其他人说的那样,自己遍历数组是很简单的。

然而,在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示例