2015-10-18 1 views
0

MyIds имеет только два номера ID 1 и 2JQuery или JavaScript сравнить два массива один содержит объект

var MyIds = [1,2] 

но MyObject имеет три номера ID 1, 2 и 3 (В действительности это имеет около 500 идентификаторам)

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

более разнообразный гуманного без использования библиотеки:

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; 
Смежные вопросы