FreeCodeCamp筆記之:Where art thou

題目

寫(xiě)一個(gè) function,它遍歷一個(gè)對(duì)象數(shù)組(第一個(gè)參數(shù))并返回一個(gè)包含相匹配的屬性-值對(duì)(第二個(gè)參數(shù))的所有對(duì)象的數(shù)組。如果返回的數(shù)組中包含 source 對(duì)象的屬性-值對(duì),那么此對(duì)象的每一個(gè)屬性-值對(duì)都必須存在于 collection 的對(duì)象中。
例如,如果第一個(gè)參數(shù)是[{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }],第二個(gè)參數(shù)是{ last: "Capulet" }
,那么你必須從數(shù)組(第一個(gè)參數(shù))返回其中的第三個(gè)對(duì)象,因?yàn)樗俗鳛榈诙€(gè)參數(shù)傳遞的屬性-值對(duì)。
如果你被難住了,記得使用 Read-Search-Ask編寫(xiě)你自己的代碼。
這是一些對(duì)你有幫助的資源:
Global Object
Object.hasOwnProperty()
Object.keys()

function where(collection, source) {
  var arr = [];
  // What's in a name?
  return arr;
}
where([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });

思路

  • 我能說(shuō)這翻譯是shit嗎.....,屬性-值對(duì) 是什么鬼,看了5遍了沒(méi)看明白;
  • 找來(lái)紙筆,畫(huà)了畫(huà),我的理解應(yīng)該是說(shuō),把source里的對(duì)象的每一個(gè)屬性(可能有多個(gè))以及屬性值去 collection 里找,如果找到了屬性,屬性值都相等的就返回給arr;

解答

function where(collection, source) {
  var arr = [];
  // What's in a name?
  for(var i = 0;i < collection.length;i++){     //循環(huán)查找 collection
      var p = true;                                        //先定義一個(gè) 初始結(jié)果,每次返回的結(jié)果對(duì)這個(gè)初始值進(jìn)行修改;
      for(var j in source){                             //  循環(huán)source的每一個(gè)屬性
          if (source[j] !== collection[i][j]){       //判斷source里的當(dāng)前屬性&屬性值是否在collection里不存在
              p = false;                                  
          }
      }
      if( p === true){                                   // source循環(huán)結(jié)束之后,判斷 p 目前的值
          arr.push(collection[i]);                    //將當(dāng)前的collection的屬性&屬性值加入 arr
      }
  }
  return arr;
}
where([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
  • 可能是對(duì)題目的閱讀或者提示不太熟悉的原因,我現(xiàn)在的這種寫(xiě)法也能得出正確結(jié)果,提交的時(shí)候也通過(guò)了;
  • 但題目的建議函數(shù)一個(gè)沒(méi)用上,可能用那些函數(shù)會(huì)更簡(jiǎn)單??
  • 還要繼續(xù)努力學(xué)習(xí),如果發(fā)現(xiàn)了更高效的寫(xiě)法,再回頭來(lái)修正;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評(píng)論 19 139
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,690評(píng)論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,822評(píng)論 18 399
  • 快三十了,我從小就迫不及待要獨(dú)立,自己養(yǎng)活自己,大學(xué)畢業(yè)的時(shí)候,因?yàn)檎娴囊粺o(wú)所有所以沒(méi)有想過(guò)留在北京。我是可以找到...
    對(duì)對(duì)對(duì)小姐閱讀 205評(píng)論 0 1
  • 今天對(duì)于人類來(lái)說(shuō),是感恩節(jié),西方的人類將吃火雞感謝上帝的眷顧,但站在一只雞的立場(chǎng),對(duì)于成千上萬(wàn)的它們來(lái)說(shuō),今天又是...
    南瓜芋頭閱讀 955評(píng)論 2 17

友情鏈接更多精彩內(nèi)容