jQuery 第一个对象,其中 x = true

jQuery first object where x = true

我有一些对象作为参数传递给函数,例如:

$( document ).on( "custom.event", function( evt, obj ) {
    console.log( obj );
});

对象看起来像这样(在控制台中):

Object {name: "obj1", property: "", somethingElse: "some value"}
Object {name: "obj2", property: "1", somethingElse: "some value"} //I want this one!
Object {name: "obj3", property: "", somethingElse: "some value"}
Object {name: "obj4", property: "1", somethingElse: "some value"}

我想使用 属性 等于“1”的 FIRST 对象,并让我支配其余的属性及其值(来自上述 obj)。我该怎么做?我试过 $.each 但无法弄清楚如何只 return 第一个对象 属性 == "1"。

谢谢

遍历数组并在某项与所需的 属性 值匹配时存储引用。

var first1Obj;

for(i=0; i<=obj.length; i++){
   if (obj[i].property == "1"){
       first1Obj = obj[i];
       break;
    }
}

查看演示:http://jsfiddle.net/7vmbs95t/

您可以使用 $.each 循环元素并在找到第一个对象时使用 return false 中断循环:

var searchedObject = null;
$.each(obj, function(index, el) {
    if (el.property == "1") {
        searchedObject = el;
        return false;
    }
});

如果您不担心 IE8 或以下版本,您也可以使用 Array.prototype.filter()

var searchedObject = obj.filter(function(el) {
    return el.property == "1"
})[0]; // [0] to get the 1st element.

检查这是否适合您:https://jsfiddle.net/leojavier/83wt0vvg/

var obj = [
 {name: "obj1", property: "", somethingElse: "some value"},
 {name: "obj2", property: "1", somethingElse: "some value"},
 {name: "obj3", property: "", somethingElse: "some value"},
 {name: "obj4", property: "1", somethingElse: "some value"}]

 for(item in obj) {
  if(obj[item].property == 1) {
    console.log(obj[item].name)
    break;
  }

 }