2015-06-30 6 views
0

Почему этот код не работает? Я пытаюсь пропустить коллекции объектов и определить, соответствуют ли значения свойств источнику. Если значения свойств совпадают, я хочу их вставить в массив. Когда i console.log в цикле for in, я становлюсь неопределенным, и все, кажется, попадает в массив. Вот код:для петли плюс для петли

function where(collection, source) { 
    var arr = []; 
    // What's in a name? 
    for(var i =0; i < collection.length; i++){  
    for(var key in collection){ 
     if (collection[i][key] === source[key]) { 
     arr.push(collection[i]); 
     } 
    } 
    }  
} 

    return arr; 
} 

where([{ first: 'Romeo', last: 'Montague' }, { first: 'Mercutio', last: null }, { first: 'Tybalt', last: 'Capulet' }], { last: 'Capulet' }); 

Я думаю, что это должно работать, но я не уверен, что происходит с кодом. Как я могу исправить код?

Когда я просто пытаюсь проверить, если значения могут быть записаны им получать неопределенными, не знаю, почему:

function where(collection, source) { 
    var arr = []; 
    // What's in a name? 
    for(var i =0; i < collection.length; i++){ 

    for(var key in collection){ 
      console.log("collection[i][key]:",collection[i][key]); 
      console.log("source[key]:", source[key]); 



    } 

    } 

    return arr; 
} 
+1

Обе ваши внутренние и внешние петли перебирать то же итерация. – zerkms

ответ

2

Вам просто нужно добавить [я] на второй цикл (

для (ключ вар в коллекции [я])

function where(collection, source) { 
    var arr = []; 
    // What's in a name? 
    for(var i =0; i < collection.length; i++){ 

    for(var key in collection[i]){ 
     if(collection[i][key] === source[key]) 
     { 
      arr.push(collection[i]); 
     } 
    } 

    } 

    return 
+0

wow я потратил путь к длинному, но ваше право это работает, спасибо! – codemonkey

+0

вам не нужно говорить «спасибо» - принятие ответа действует как благодарность – Niko

+0

Я только сказал спасибо, потому что он не позволил мне принять ответ еще – codemonkey

Смежные вопросы