2013-06-12 58 views
0

javascript中有一组对象。我需要在该数组中查找该对象的属性值。所有具有匹配属性的对象我需要将它们放入另一个数组中。我是jQuery初学者,任何帮助将非常感激。谢谢。搜索数组中的值,并将结果放入另一个数组中jquery

var numPerRow = 6; 
     for (var i=0; i<subjects.length; i+=numPerRow) { 
      // TODO: Implement a row view 
var printTitle = subjects[i].getTitle(); 
if (printTitle.indexOf(searchValue) > -1) 
{ 
      var row = $('<div class="browse-printables-row"></div>'); 
      for (var j=0; j<numPerRow; j++) { 
       var idx = i+j; 
       if (idx >= subjects.length) { 
        break; 
       } 
       // TODO: Implement a printables tile view 
       row.append($(
        '<div class="printable-tile">' + 
         '<img src=' + printTitle[idx].getIconURL() + ' class="subject-tile-icon"></img>' + 
         '<div class="subject-tile-title">' + printTitle[idx].getTitle() + '</div>' + 
        '</div>' 
       )); 
      } 
} 
      grid.append(row); 
+0

请发布一些代码,到目前为止你有什么尝试? –

+2

至少请发布您的输入(数组)和您的预期输出。 –

+1

@DavidThomas,不!你们做我的工作,并猜测我需要什么! – gdoron

回答

1

阅读关于阵列的filter方法

实施例将滤光器阵列和仅返回对象,其中属性b等于2:

var filtered = [{a: 1, b: 2}, {a: 5, b:2}, {a:2, b:1}].filter(function(el, index, array) { 
    if(typeof el.b === 'undefined') return false; 
    return (el.b === 2); 
}); 
+0

为什么不简化:'typeof el.b ==='undefined'?假:el.b;'? –

+0

我已经写了一个例子来获取一些特定的对象(其中属性b等于两个),您需要将您的版本更正为'el.b === 2'。我完全同意它可以写得更短,但我不同意短手'if'陈述更加简单易读。顺便说一句,如果你想检查对象数组中是否存在属性,你的示例将无法正常工作,因为'el.b'可以等于零,并且过滤器的回调函数将返回等于false的0。 –

1

骨架答案为骨架问题

//declare array 
if(jQuery.inArray(yourObj, arrayOfObjs) === -1) 
{ 
not found 
} 
else 
{ 
found //push in to array 
} 
+1

我有一点点......但它对于一个不好的问题是一个很好的答案 – Joum

相关问题