1. 程式人生 > >Where art thou-freecodecamp算法題目

Where art thou-freecodecamp算法題目

題目 思路 mon 參數 scrip for 元素 asc nta

Where art thou


1.要求

  • 寫一個 function,它遍歷一個對象數組(第一個參數)並返回一個包含相匹配的屬性-值對(第二個參數)的所有對象的數組。
  • 如果返回的數組中包含 source 對象的屬性-值對,那麽此對象的每一個屬性-值對都必須存在於 collection 的對象中。

2.思路

  • 用Object.keys(source)取出source的屬性
  • 利用Object.keys()在for循環中遍歷collection所有子元素的屬性,設定mark標記變量,一層循環中初始為true。
  • 在for循環中遇到collection子元素不含sourse屬性或者兩對應屬性值不相等時,mark變為false
  • 一層循環最後,如果mark為true,就把對應collection子元素push到結果數組

3.代碼

function where(collection, source) {
var arr = [];
var arrj = Object.keys(source);
for(var i = 0; i<collection.length; i++){
    var arri = Object.keys(collection[i]);
    var mark = true;
    for (var j = 0; j < arrj.length; j++){
    if (arri.indexOf(arrj[j]) === -1 ||  collection[i][arrj[j]] !== source[arrj[j]]) {
        mark =false;
    }
    }
    if (mark){
    arr.push(collection[i]);
    }
}
// What‘s in a name?
return arr;
}

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

4.相關鏈接

  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

Where art thou-freecodecamp算法題目