开发者

Array selector function by property value

I have:

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

I want:

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

And as a 开发者_StackOverflow社区result:

obj = { key: '2' }

Is there such function in JavsScript or jQuery?


I don't know of a built in function. However, it would be trivial to implement it yourself:

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


I don't think jQuery is really necessary here. The function is as simple as:

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

Live example: http://jsfiddle.net/QARAd/


Like others have said it's quite simple to just loop over the array yourself.

However there is a filter method in JS 1.5 (Apparently not supported in IE8 and lower, although the link has a compatibility work around)

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜