2015-10-18 116 views
0

MyIds只有兩個ID號1和2jQuery的或JavaScript比較兩個陣列一個包含對象

var MyIds = [1,2] 

但爲MyObject具有三個ID號1,2和3(在現實中,這具有約500的Id)

var MyObject = [{id:1,size:21,length:31},{id:2,size:22,length:32},{id:3,size:23,length:33}] 

,我想做出一個新的變量,它看起來像這樣,我需要一些神奇的代碼,將比較這兩個變量,只返回對象的詳細信息,其中是比賽

var Result = [{id:1,size:21,length:31},{id:2,size:22,length:32}] 

我很高興能使用jQuery,如果它幫助

回答

0

它可以很容易地解決了下劃線或lodash的東西,如:

Result = _.filter(MyObject, function (item) { 
    return _.indexOf(item.id, MyIds) !== -1; 
}); 

我承認,這是一個懶惰的答案。有可能沒有添加新聞庫的方法。但lodash是太酷了:)

0

可以毫不jQuery的做到:

var MyIds = [1,2]; 
var MyObject = [{id:1,size:21,length:31},{id:2,size:22,length:32},{id:3,size:23,length:33}]; 

var Result = []; 

MyObject.forEach(function(element) { 
    MyIds.forEach(function(id){ 
     if(element.id == id) 
     Result.push(element); 
    }); 
}); 
0

更加多元化的sollution不使用任何庫:

function find(propName, filters, collection){ 
    var temp = []; 
    for(var i = 0; i < collection.length; i++){ 
     for(var j = 0; j < filters.length; j++){ 
      if(collection[i][propName] === filters[j]){ 
       temp.push(collection[i]); 
       break; 
      } 
     } 
    } 
    return temp;